)]}'
{"setup.cfg":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":21,"context_line":"[files]"},{"line_number":22,"context_line":"packages \u003d"},{"line_number":23,"context_line":"    watcher"},{"line_number":24,"context_line":"    watcher_tempest_tests"},{"line_number":25,"context_line":"data_files \u003d"},{"line_number":26,"context_line":"    etc/ \u003d etc/*"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"fa69d971_aba47ca5","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":25},"updated":"2016-01-11 19:46:39.000000000","message":"Should we name the top level directory \"watcher_tempest_plugin\" instead?  That is what the tempest-plugin-cookiecutter does:\n\nhttps://github.com/openstack/tempest-plugin-cookiecutter/tree/master/%7B%7Bcookiecutter.repo_name%7D%7D/%7B%7Bcookiecutter.repo_name%7D%7D_tempest_plugin","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":21,"context_line":"[files]"},{"line_number":22,"context_line":"packages \u003d"},{"line_number":23,"context_line":"    watcher"},{"line_number":24,"context_line":"    watcher_tempest_tests"},{"line_number":25,"context_line":"data_files \u003d"},{"line_number":26,"context_line":"    etc/ \u003d etc/*"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"da6ed579_bdc78944","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":25},"in_reply_to":"fa69d971_aba47ca5","updated":"2016-01-12 10:48:32.000000000","message":"Good question! Actually I based myself on Manila and Congress in order so I ended up forgetting about this bit of the documentation. So I will change it :)","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"}],"watcher/contrib/tempest/tempest/cli/README.rst":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Tempest Field Guide to CLI tests"},{"line_number":10,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"What are these tests?"},{"line_number":14,"context_line":"---------------------"},{"line_number":15,"context_line":"The cli tests test the various OpenStack command line interface tools"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_80c36c37","side":"PARENT","line":12,"updated":"2016-01-15 11:09:48.000000000","message":"You removed this file but IMHO this is interesting to explain what is the aim of these tests.","commit_id":"9c33f8aaebefb8106330304f6b0f3145c34ca4fc"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Tempest Field Guide to CLI tests"},{"line_number":10,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"What are these tests?"},{"line_number":14,"context_line":"---------------------"},{"line_number":15,"context_line":"The cli tests test the various OpenStack command line interface tools"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_ebe8fbb4","side":"PARENT","line":12,"in_reply_to":"da6ed579_80c36c37","updated":"2016-01-15 17:23:06.000000000","message":"This is actually in the Tempest documentation for the most part.","commit_id":"9c33f8aaebefb8106330304f6b0f3145c34ca4fc"}],"watcher_tempest_plugin/README.rst":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Tempest Integration"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_470eefe5","line":1,"updated":"2016-01-15 10:38:31.000000000","message":"Can you please add the license ?\n\n..\n      Except where otherwise noted, this document is licensed under Creative\n      Commons Attribution 3.0 License.  You can view the license at:\n\n          https://creativecommons.org/licenses/by/3.0/","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Tempest Integration"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_4bda6718","line":1,"in_reply_to":"da6ed579_470eefe5","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Tempest Integration"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"This directory contains Tempest tests to cover Watcher project."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_c79e5f62","line":3,"updated":"2016-01-15 10:38:31.000000000","message":"IMHO, we should reference this documentation. \nWe can maybe add this documentation in the section \u0027Contributing to Watcher\u0027 \n\nWhat do you think about ?","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Tempest Integration"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"This directory contains Tempest tests to cover Watcher project."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_6b43abaf","line":3,"in_reply_to":"da6ed579_c79e5f62","updated":"2016-01-15 17:23:06.000000000","message":"I added a DocImpact where we can think on how to integration this bit of doc into the main one.","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"To list all Watcher Tempest cases, go to the Tempest directory, then run::"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    $ testr list-tests watcher"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"To run only these tests in Tempest, go to Tempest directory, then run::"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_bdbd7c03","line":17,"updated":"2016-01-15 10:38:31.000000000","message":"This command doesn\u0027t work for me. I changed in the file .testr.conf the absolute path to \u0027watcher source code\u0027.\n\n ${PYTHON:-python} -m subunit.run discover -t /home/jedartois/dev/watcher /home/jedartois/dev/watcher/watcher_tempest_plugin ..","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"To run only these tests in Tempest, go to Tempest directory, then run::"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    $ ./run_tempest.sh -N -- watcher"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"To run a single test case, go to Tempest directory, then run with test case"},{"line_number":24,"context_line":"name, e.g.::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_7dbf0461","line":21,"updated":"2016-01-15 10:38:31.000000000","message":"By default in my case the selected config file is /etc/tempest/tempest.conf but the correct settings are in this file watcher/etc/tempest.conf\n\nIMHO, we can add the parameter \u0027--config\u003dwatcher/etc/tempest.conf\u0027 in the documentation.\n\n\n./run_tempest.sh --config\u003dwatcher/etc/tempest.conf -N -- watcher\n\n\nMoreover, we can explain that we need to change to configuration to target devstack or any openstack deployement.\n\nuri,uri_v3,admin_password,ect","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"To run only these tests in Tempest, go to Tempest directory, then run::"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    $ ./run_tempest.sh -N -- watcher"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"To run a single test case, go to Tempest directory, then run with test case"},{"line_number":24,"context_line":"name, e.g.::"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_cbe657af","line":21,"in_reply_to":"da6ed579_7dbf0461","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    $ ./run_tempest.sh -N -- watcher"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"To run a single test case, go to Tempest directory, then run with test case"},{"line_number":24,"context_line":"name, e.g.::"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    $ ./run_tempest.sh -N -- watcher_tempest_plugin.tests.api.test_audit_template.TestCreateAuditTemplate.test_create_audit_template"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_1db287e5","line":23,"updated":"2016-01-15 10:38:31.000000000","message":"This command doesn\u0027t work for me.\n\nShe block in this state : \n\njedartois@bebop:~/dev/tempest$ ./run_tempest.sh --config\u003dwatcher/etc/tempest.conf -N -- watcher 2016-01-15 11:29:57.170 11343 INFO tempest [-] Using tempest config file /home/jedartois/dev/tempest/watcher/etc/tempest.conf\n2016-01-15 11:29:57.614 11343 INFO tempest_lib.common.rest_client [req-f8e086e1-b159-4b0d-bb28-22e5f19a107b ] Request (main): 200 POST http://10.50.0.108:5000/v2.0/tokens\n2016-01-15 11:29:57.684 11343 INFO tempest_lib.common.rest_client [req-ae25c3b8-65b4-4cb2-b716-da8103b96b9d ] Request (main): 200 POST http://10.50.0.108:5000/v2.0/tokens","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    $ ./run_tempest.sh -N -- watcher_tempest_plugin.tests.api.test_audit_template.TestCreateAuditTemplate.test_create_audit_template"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Alternatively, to run the Watcher Tempest plugin tests using tox, go to the"},{"line_number":29,"context_line":"Watcher Tempest directory, then run::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    $ tox -eall-plugin watcher"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_fd6bf3ee","line":28,"updated":"2016-01-15 10:38:31.000000000","message":"Do we have to go in the watcher_tempest_plugin or in the tempest ?","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    $ ./run_tempest.sh -N -- watcher_tempest_plugin.tests.api.test_audit_template.TestCreateAuditTemplate.test_create_audit_template"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Alternatively, to run the Watcher Tempest plugin tests using tox, go to the"},{"line_number":29,"context_line":"Watcher Tempest directory, then run::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    $ tox -eall-plugin watcher"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_2b9b7319","line":28,"in_reply_to":"da6ed579_fd6bf3ee","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    $ ./run_tempest.sh -N -- watcher_tempest_plugin.tests.api.test_audit_template.TestCreateAuditTemplate.test_create_audit_template"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Alternatively, to run the Watcher Tempest plugin tests using tox, go to the"},{"line_number":29,"context_line":"Watcher Tempest directory, then run::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_1d14c74a","line":29,"updated":"2016-01-15 10:38:31.000000000","message":"As discussed with you we need to add in the requirements.txt \n\n-e git+https://github.com/openstack/watcher","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    $ ./run_tempest.sh -N -- watcher_tempest_plugin.tests.api.test_audit_template.TestCreateAuditTemplate.test_create_audit_template"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Alternatively, to run the Watcher Tempest plugin tests using tox, go to the"},{"line_number":29,"context_line":"Watcher Tempest directory, then run::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_4b9267f7","line":29,"in_reply_to":"da6ed579_1d14c74a","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"56621959e013aa75a4492d67030787db5268b2b9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Alternatively, to run the Watcher Tempest plugin tests using tox, go to the"},{"line_number":29,"context_line":"Watcher Tempest directory, then run::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"And, to run a specific test::"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_207080a3","line":31,"updated":"2016-01-15 10:38:31.000000000","message":"When I ran this command I have this messages:\n...\n s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 913, in _replace_env\n    env_list \u003d self.getdict(\u0027setenv\u0027)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 839, in getdict\n    s \u003d self.getstring(name, None)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 893, in getstring\n    x \u003d self._replace(x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 993, in _replace\n    return RE_ITEM_REF.sub(self._replace_match, x)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 989, in _replace_match\n    return handler(match)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 959, in _replace_substitution\n    val \u003d self._substitute_from_other_section(sub_key)\n  File \"/usr/local/lib/python2.7/dist-packages/tox/config.py\", line 941, in _substitute_from_other_section\n    if section in self._cfg and item in self._cfg[section]:\n  File \"/usr/local/lib/python2.7/dist-packages/py/_iniconfig.py\", line 151, in __getitem__\n    return SectionWrapper(self, name)\nRuntimeError: maximum recursion depth exceeded while calling a Python object","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"a286e77def3d5ccd007d2c394871d59802a194b7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Alternatively, to run the Watcher Tempest plugin tests using tox, go to the"},{"line_number":29,"context_line":"Watcher Tempest directory, then run::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"And, to run a specific test::"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_b4db447b","line":31,"in_reply_to":"da6ed579_207080a3","updated":"2016-01-15 15:49:23.000000000","message":"What version of tox are you running?  Looks like the same bug as https://bitbucket.org/hpk42/tox/issues/285/tox-220-breaks-some-toxini-config-files which apparently is fixed in 2.3.1, though I haven\u0027t verified.","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"8e52e4d1c59c1956491a1ac65ef034bc218871c4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"Alternatively, to run the Watcher Tempest plugin tests using tox, go to the"},{"line_number":29,"context_line":"Watcher Tempest directory, then run::"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"And, to run a specific test::"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"da6ed579_1f1ee96f","line":31,"in_reply_to":"da6ed579_b4db447b","updated":"2016-01-15 16:07:21.000000000","message":"I\u0027m using the version 2.2.1. \nNext week I will upgrade my version to see if the problem persist.\nThanks Taylor","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"8b167a57abce0aeea32643240386ce86a1a767b7","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Watcher Tempest testing setup"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Given that you have installed a fresh Tempest into a virtual environment, you"},{"line_number":25,"context_line":"can now install watcher alongside it in development mode by issuing the"},{"line_number":26,"context_line":"following command::"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba63e191_2e46ec23","line":24,"updated":"2016-01-19 10:47:31.000000000","message":"nit: Can you add please a link to virtualenv documentation.","commit_id":"c9cca342cfe3bb347327ecda8a5f43f668037441"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"8b167a57abce0aeea32643240386ce86a1a767b7","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Alternatively, you can also run the Watcher Tempest plugin tests using tox. But"},{"line_number":67,"context_line":"before you can do so, you need to follow the Tempest explanation on running"},{"line_number":68,"context_line":"`tox with plugins`_. Then, go to the Watcher Tempest directory, then run::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":".. _tox with plugins: http://docs.openstack.org/developer/tempest/plugin.html#notes-for-using-plugins-with-virtualenvs"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba63e191_ae173cec","line":69,"updated":"2016-01-19 10:47:31.000000000","message":"By default in my case the selected config file is /etc/tempest/tempest.conf but the correct settings are in this file watcher/etc/tempest.conf\n\nYou should add this line in  the documentation:\nexport TEMPEST_CONFIG_DIR\u003d\u003cWATCHER_TEMPEST_DIR\u003e","commit_id":"c9cca342cfe3bb347327ecda8a5f43f668037441"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"749b14e3e15f559ae760437a405399d38ec761cd","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":".. _installing Tempest: http://docs.openstack.org/developer/tempest/overview.html#quickstart"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Watcher Tempest testing setup"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"ba63e191_5d271064","line":20,"updated":"2016-01-20 13:46:48.000000000","message":"$ git clone https://github.com/openstack/tempest/\n$ pip install tempest/\n\nTEMPEST_DIR","commit_id":"2ac4e2cdcc37eee33d17b2993a20268729bd9701"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"749b14e3e15f559ae760437a405399d38ec761cd","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    $  pip install -e \u003cWATCHER_SRC_DIR\u003e"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Then you can create a Tempest folder for Watcher by issuing the following"},{"line_number":31,"context_line":"command::"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    $ cd \u003cTEMPEST_DIR\u003e"}],"source_content_type":"text/x-rst","patch_set":21,"id":"ba63e191_5db150e0","line":30,"range":{"start_line":30,"start_character":22,"end_line":30,"end_character":36},"updated":"2016-01-20 13:46:48.000000000","message":"Setup a local working environment (WATCHER_TEMPEST_DIR) for running tempest\n\nadd explanation of this command : targeted platform on which run watcher tests\n\ncontains only configuration file for tempest","commit_id":"2ac4e2cdcc37eee33d17b2993a20268729bd9701"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"749b14e3e15f559ae760437a405399d38ec761cd","unresolved":false,"context_lines":[{"line_number":31,"context_line":"command::"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    $ cd \u003cTEMPEST_DIR\u003e"},{"line_number":34,"context_line":"    $ tempest init \u003cWATCHER_TEMPEST_DIR\u003e"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"At this point you need to edit the ``\u003cWATCHER_TEMPEST_DIR\u003e/etc/tempest.conf``"},{"line_number":37,"context_line":"file as described in the `Tempest configuration guide`_."}],"source_content_type":"text/x-rst","patch_set":21,"id":"ba63e191_0273774e","line":34,"updated":"2016-01-20 13:46:48.000000000","message":"in your are into a venv :  $tempest init my_targeted_cloud\nif not : \n$ cd TEMPEST_DIR\n$ tempest init --config-dir ./etc my_targeted_cloud","commit_id":"2ac4e2cdcc37eee33d17b2993a20268729bd9701"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"749b14e3e15f559ae760437a405399d38ec761cd","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"At this point you need to edit the ``\u003cWATCHER_TEMPEST_DIR\u003e/etc/tempest.conf``"},{"line_number":37,"context_line":"file as described in the `Tempest configuration guide`_."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":".. _virtual environment: http://docs.python-guide.org/en/latest/dev/virtualenvs/"},{"line_number":41,"context_line":".. _Tempest configuration guide: http://docs.openstack.org/developer/tempest/configuration.html"}],"source_content_type":"text/x-rst","patch_set":21,"id":"ba63e191_78022271","line":38,"updated":"2016-01-20 13:46:48.000000000","message":"$ cd tempest/my_targeted_cloud/etc\n$ cp tempest.conf.sample tempest.conf\n\nlist the minimum configuration to do :\nFor identity v2: these parameters should be set:\n\nuri \u003d http://\u003ckeystone public endpoint IP:port\u003e/v2.0\nadmin_tenant_name\nadmin_username\nadmin_password\n\n\nFor identity v3, these parameters should be set:\nuri_v3 \u003d http://\u003ckeystone public endpoint IP:port\u003e/v3\nadmin_tenant_name\nadmin_username\nadmin_password\nadmin_domain_name\napi_v2 \u003d false\n\n\nfor more info, please refer to :\n\nKeystone connection (cf http://docs.openstack.org/developer/tempest/configuration.html#keystone-connection-info)\n\nDynamic Keystone Credentials (http://docs.openstack.org/developer/tempest/configuration.html#dynamic-credentials)","commit_id":"2ac4e2cdcc37eee33d17b2993a20268729bd9701"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"770840b46f7ab5a5ffffa198f27e1ec837fad9de","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"By default the configuration file is empty so before starting, you need to issue the following commands::"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    $ cd tempest/my_targeted_cloud/etc"},{"line_number":61,"context_line":"    $ cp tempest.conf.sample tempest.conf"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"At this point you need to edit the ``watcher-cloud/etc/tempest.conf``"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_400ac622","line":60,"updated":"2016-01-22 06:03:22.000000000","message":"Since we changed into the TEMPEST_DIR directory on line 55 and we used the name \"watcher-cloud\", this should be:\n\n  cd ./watcher-cloud/etc/","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"04c02d612c457774b1a3b2f394936aff73d7f1b5","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"By default the configuration file is empty so before starting, you need to issue the following commands::"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    $ cd tempest/my_targeted_cloud/etc"},{"line_number":61,"context_line":"    $ cp tempest.conf.sample tempest.conf"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"At this point you need to edit the ``watcher-cloud/etc/tempest.conf``"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_1265fcdf","line":60,"in_reply_to":"9a68dd71_400ac622","updated":"2016-01-22 09:37:01.000000000","message":"Done","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"770840b46f7ab5a5ffffa198f27e1ec837fad9de","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"At this point you need to edit the ``watcher-cloud/etc/tempest.conf``"},{"line_number":64,"context_line":"file as described in the `Tempest configuration guide`_."},{"line_number":65,"context_line":"So here below is a minimal configuration you need to set within your"},{"line_number":66,"context_line":"``tempest.conf`` configuration file which can get you started."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"For Keystone V3::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_6024aaae","line":65,"updated":"2016-01-22 06:03:22.000000000","message":"\"Shown below is a minimal...\"","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"04c02d612c457774b1a3b2f394936aff73d7f1b5","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"At this point you need to edit the ``watcher-cloud/etc/tempest.conf``"},{"line_number":64,"context_line":"file as described in the `Tempest configuration guide`_."},{"line_number":65,"context_line":"So here below is a minimal configuration you need to set within your"},{"line_number":66,"context_line":"``tempest.conf`` configuration file which can get you started."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"For Keystone V3::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_d25e8411","line":65,"in_reply_to":"9a68dd71_6024aaae","updated":"2016-01-22 09:37:01.000000000","message":"Done","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"770840b46f7ab5a5ffffa198f27e1ec837fad9de","unresolved":false,"context_lines":[{"line_number":65,"context_line":"So here below is a minimal configuration you need to set within your"},{"line_number":66,"context_line":"``tempest.conf`` configuration file which can get you started."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"For Keystone V3::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    uri_v3 \u003d http://\u003cKEYSTONE_PUBLIC_ENDPOINT_IP\u003e:\u003cKEYSTONE_PORT\u003e/v3"},{"line_number":71,"context_line":"    admin_tenant_name \u003d \u003cADMIN_TENANT_NAME\u003e"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_203c722e","line":68,"updated":"2016-01-22 06:03:22.000000000","message":"This did not work for me.  This is the only combination I could get working with the default devstack setup:\n\n  uri \u003d http://\u003cKEYSTONE_PUBLIC_ENDPOINT_IP\u003e:   \u003cKEYSTONE_PORT\u003e/v2.0/\n  uri_v3 \u003d http://\u003cKEYSTONE_PUBLIC_ENDPOINT_IP\u003e:\u003cKEYSTONE_PORT\u003e/v3/\n  admin_tenant_name \u003d \u003cADMIN_TENANT_NAME\u003e\n  admin_username \u003d \u003cADMIN_USERNAME\u003e\n  admin_password \u003d \u003cADMIN_PASSWORD\u003e\n  admin_domain_name \u003d Default\n  api_v3 \u003d true\n  api_v2 \u003d false\n  auth_version \u003d v3\n\nIf I didn\u0027t have any one of the uri, api_v3, api_v2, or auth_version, then it would either give me an error or use v2.0 instead of v3.","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"04c02d612c457774b1a3b2f394936aff73d7f1b5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"So here below is a minimal configuration you need to set within your"},{"line_number":66,"context_line":"``tempest.conf`` configuration file which can get you started."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"For Keystone V3::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    uri_v3 \u003d http://\u003cKEYSTONE_PUBLIC_ENDPOINT_IP\u003e:\u003cKEYSTONE_PORT\u003e/v3"},{"line_number":71,"context_line":"    admin_tenant_name \u003d \u003cADMIN_TENANT_NAME\u003e"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_f26948bf","line":68,"in_reply_to":"9a68dd71_203c722e","updated":"2016-01-22 09:37:01.000000000","message":"Done","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"770840b46f7ab5a5ffffa198f27e1ec837fad9de","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To run only these tests in Tempest, you can then issue these commands::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    $ ./run_tempest.sh --config watcher-cloud/etc/tempest.conf -N \\"},{"line_number":105,"context_line":"        -- watcher"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Or alternatively::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_00284ee1","line":104,"updated":"2016-01-22 06:03:22.000000000","message":"Probably okay with just leaving this on one line since it\u0027s a code snippet IMO.","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"04c02d612c457774b1a3b2f394936aff73d7f1b5","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"To run only these tests in Tempest, you can then issue these commands::"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    $ ./run_tempest.sh --config watcher-cloud/etc/tempest.conf -N \\"},{"line_number":105,"context_line":"        -- watcher"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Or alternatively::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_06c70146","line":104,"in_reply_to":"9a68dd71_00284ee1","updated":"2016-01-22 09:37:01.000000000","message":"Done","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"770840b46f7ab5a5ffffa198f27e1ec837fad9de","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    $ ./run_tempest.sh --config watcher-cloud/etc/tempest.conf -N \\"},{"line_number":105,"context_line":"        -- watcher"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Or alternatively::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    $ cd watcher-cloud"},{"line_number":110,"context_line":"    $ ./run_tempest.sh -N -- watcher"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"To run a single test case, go to Tempest directory, then run with test case"},{"line_number":113,"context_line":"name, e.g.::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_c0e6b6b3","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":36},"updated":"2016-01-22 06:03:22.000000000","message":"This does not work for me.  There is no run_tempest.sh script located in the \u003cTEMPEST_DIR\u003e/watcher-cloud/ directory.","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"04c02d612c457774b1a3b2f394936aff73d7f1b5","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    $ ./run_tempest.sh --config watcher-cloud/etc/tempest.conf -N \\"},{"line_number":105,"context_line":"        -- watcher"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Or alternatively::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    $ cd watcher-cloud"},{"line_number":110,"context_line":"    $ ./run_tempest.sh -N -- watcher"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"To run a single test case, go to Tempest directory, then run with test case"},{"line_number":113,"context_line":"name, e.g.::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_12dadc78","line":110,"range":{"start_line":107,"start_character":0,"end_line":110,"end_character":36},"in_reply_to":"9a68dd71_c0e6b6b3","updated":"2016-01-22 09:37:01.000000000","message":"Ok forgot the extra dot","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"a10a3a8c44947e6f3b17b900ea75158649f78345","unresolved":false,"context_lines":[{"line_number":119,"context_line":"before you can do so, you need to follow the Tempest explanation on running"},{"line_number":120,"context_line":"`tox with plugins`_. Then, run::"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    $ export TEMPEST_CONFIG_DIR\u003dwatcher-cloud"},{"line_number":123,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":".. _tox with plugins: http://docs.openstack.org/developer/tempest/plugin.html#notes-for-using-plugins-with-virtualenvs"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_a3edcc26","line":122,"updated":"2016-01-22 06:12:23.000000000","message":"Missing the /etc/ on the end:\n\n  $ export TEMPEST_CONFIG_DIR\u003dwatcher-cloud/etc/","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"04c02d612c457774b1a3b2f394936aff73d7f1b5","unresolved":false,"context_lines":[{"line_number":119,"context_line":"before you can do so, you need to follow the Tempest explanation on running"},{"line_number":120,"context_line":"`tox with plugins`_. Then, run::"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    $ export TEMPEST_CONFIG_DIR\u003dwatcher-cloud"},{"line_number":123,"context_line":"    $ tox -eall-plugin watcher"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":".. _tox with plugins: http://docs.openstack.org/developer/tempest/plugin.html#notes-for-using-plugins-with-virtualenvs"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_e6cbcd51","line":122,"in_reply_to":"9a68dd71_a3edcc26","updated":"2016-01-22 09:37:01.000000000","message":"Done","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"a10a3a8c44947e6f3b17b900ea75158649f78345","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"And, to run a specific test::"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    $ export TEMPEST_CONFIG_DIR\u003dwatcher-cloud"},{"line_number":130,"context_line":"    $ tox -eall-plugin watcher_tempest_plugin.tests.api.admin.test_audit_template.TestCreateDeleteAuditTemplate.test_create_audit_template"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_43f410f1","line":129,"updated":"2016-01-22 06:12:23.000000000","message":"Ditto","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"04c02d612c457774b1a3b2f394936aff73d7f1b5","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"And, to run a specific test::"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    $ export TEMPEST_CONFIG_DIR\u003dwatcher-cloud"},{"line_number":130,"context_line":"    $ tox -eall-plugin watcher_tempest_plugin.tests.api.admin.test_audit_template.TestCreateDeleteAuditTemplate.test_create_audit_template"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a68dd71_46b419d0","line":129,"in_reply_to":"9a68dd71_43f410f1","updated":"2016-01-22 09:37:01.000000000","message":"Done","commit_id":"5ae1afb43debc1f76c0b7cc242c3d76267f95fce"}],"watcher_tempest_plugin/infra_optim_clients.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"46fd7323eb598c92de72cd15192f888bc47790cf","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# class Manager(BaseManager):"},{"line_number":48,"context_line":"#     def __init__(self, service\u003dNone, api_microversions\u003dNone):"},{"line_number":49,"context_line":"#         super(Manager, self).__init__("},{"line_number":50,"context_line":"#             creds_factory.get_configured_credentials(\u0027user\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_b150e85f","line":47,"updated":"2016-01-12 22:33:26.000000000","message":"Forgot to remove this?","commit_id":"0103ec8c96c66ba072d1afb3ad97dfa0e8d308cf"}],"watcher_tempest_plugin/services/infra_optim/base.py":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return wrapper"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class InfraOptimClient(service_client.ServiceClient):"},{"line_number":42,"context_line":"    \"\"\"Base Tempest REST client for Watcher API.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    uri_prefix \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_e3ad92e9","line":41,"updated":"2016-01-15 11:09:48.000000000","message":"nit: BaseInfraOptimclient","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return wrapper"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class InfraOptimClient(service_client.ServiceClient):"},{"line_number":42,"context_line":"    \"\"\"Base Tempest REST client for Watcher API.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    uri_prefix \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_f4a69c0d","line":41,"in_reply_to":"da6ed579_e3ad92e9","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":41,"context_line":"class InfraOptimClient(service_client.ServiceClient):"},{"line_number":42,"context_line":"    \"\"\"Base Tempest REST client for Watcher API.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    uri_prefix \u003d \u0027\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def serialize(self, object_dict):"},{"line_number":47,"context_line":"        \"\"\"Serialize an Watcher object.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_23b64af9","line":44,"updated":"2016-01-15 11:09:48.000000000","message":"nit: can you please set the constant in upper case ?","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":41,"context_line":"class InfraOptimClient(service_client.ServiceClient):"},{"line_number":42,"context_line":"    \"\"\"Base Tempest REST client for Watcher API.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    uri_prefix \u003d \u0027\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def serialize(self, object_dict):"},{"line_number":47,"context_line":"        \"\"\"Serialize an Watcher object.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_5fbea1ae","line":44,"in_reply_to":"da6ed579_23b64af9","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \"\"\"Base Tempest REST client for Watcher API.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    uri_prefix \u003d \u0027\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def serialize(self, object_dict):"},{"line_number":47,"context_line":"        \"\"\"Serialize an Watcher object.\"\"\""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_23596a35","line":45,"updated":"2016-01-15 11:09:48.000000000","message":"Do you know the aim of is_resource_deleted ? (rest_client.py)","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \"\"\"Base Tempest REST client for Watcher API.\"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    uri_prefix \u003d \u0027\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def serialize(self, object_dict):"},{"line_number":47,"context_line":"        \"\"\"Serialize an Watcher object.\"\"\""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_45b8102a","line":45,"in_reply_to":"da6ed579_23596a35","updated":"2016-01-15 17:23:06.000000000","message":"If you reference its use in manila, it is actually overloaded with different params. In the tempest api tests on action plans patchset, I implemented it differently -\u003e see https://review.openstack.org/#/c/268166/1/watcher_tempest_plugin/tests/api/admin/base.py line 92","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"}],"watcher_tempest_plugin/services/infra_optim/v1/json/client.py":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class InfraOptimClientJSON(base.InfraOptimClient):"},{"line_number":19,"context_line":"    \"\"\"Base Tempest REST client for Watcher API v1.\"\"\""},{"line_number":20,"context_line":"    version \u003d \u00271\u0027"},{"line_number":21,"context_line":"    uri_prefix \u003d \u0027v1\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # ### AUDIT TEMPLATES ### #"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_630be2d6","line":20,"updated":"2016-01-15 11:09:48.000000000","message":"nit: can you please set the constant in upper case ?","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class InfraOptimClientJSON(base.InfraOptimClient):"},{"line_number":19,"context_line":"    \"\"\"Base Tempest REST client for Watcher API v1.\"\"\""},{"line_number":20,"context_line":"    version \u003d \u00271\u0027"},{"line_number":21,"context_line":"    uri_prefix \u003d \u0027v1\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # ### AUDIT TEMPLATES ### #"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_a5a1cc95","line":20,"in_reply_to":"da6ed579_630be2d6","updated":"2016-01-15 17:23:06.000000000","message":"It was unused so I removed it","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class InfraOptimClientJSON(base.InfraOptimClient):"},{"line_number":19,"context_line":"    \"\"\"Base Tempest REST client for Watcher API v1.\"\"\""},{"line_number":20,"context_line":"    version \u003d \u00271\u0027"},{"line_number":21,"context_line":"    uri_prefix \u003d \u0027v1\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # ### AUDIT TEMPLATES ### #"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_030ea6e4","line":21,"updated":"2016-01-15 11:09:48.000000000","message":"ditto","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class InfraOptimClientJSON(base.InfraOptimClient):"},{"line_number":19,"context_line":"    \"\"\"Base Tempest REST client for Watcher API v1.\"\"\""},{"line_number":20,"context_line":"    version \u003d \u00271\u0027"},{"line_number":21,"context_line":"    uri_prefix \u003d \u0027v1\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # ### AUDIT TEMPLATES ### #"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_25bcfcb9","line":21,"in_reply_to":"da6ed579_030ea6e4","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def filter_audit_template_by_host_aggregate(self, host_aggregate):"},{"line_number":52,"context_line":"        \"\"\"Gets an audit template associated with given host agregate ID."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :param host_aggregate_uuid: Unique identifier of the host aggregate"},{"line_number":55,"context_line":"        :return: Serialized audit template as a dictionary."},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        return self._list_request(\u0027/audit_templates\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_43e01ecd","line":54,"updated":"2016-01-15 11:09:48.000000000","message":"nit: /host_aggregate_uuid/host_aggregate","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def filter_audit_template_by_host_aggregate(self, host_aggregate):"},{"line_number":52,"context_line":"        \"\"\"Gets an audit template associated with given host agregate ID."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :param host_aggregate_uuid: Unique identifier of the host aggregate"},{"line_number":55,"context_line":"        :return: Serialized audit template as a dictionary."},{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        return self._list_request(\u0027/audit_templates\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_250abc8a","line":54,"in_reply_to":"da6ed579_43e01ecd","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def filter_audit_template_by_goal(self, goal):"},{"line_number":62,"context_line":"        \"\"\"Gets an audit template associated with given goal."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        :param uuid: Unique identifier of the audit template in UUID format."},{"line_number":65,"context_line":"        :return: Serialized audit template as a dictionary."},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"        return self._list_request(\u0027/audit_templates\u0027, goal\u003dgoal)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_432edefb","line":64,"updated":"2016-01-15 11:09:48.000000000","message":"nit: uuid/goal","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def filter_audit_template_by_goal(self, goal):"},{"line_number":62,"context_line":"        \"\"\"Gets an audit template associated with given goal."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        :param uuid: Unique identifier of the audit template in UUID format."},{"line_number":65,"context_line":"        :return: Serialized audit template as a dictionary."},{"line_number":66,"context_line":"        \"\"\""},{"line_number":67,"context_line":"        return self._list_request(\u0027/audit_templates\u0027, goal\u003dgoal)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_454810cc","line":64,"in_reply_to":"da6ed579_432edefb","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"}],"watcher_tempest_plugin/tests/api/admin/base.py":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from watcher_tempest_plugin import infra_optim_clients as clients"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# Resources must be deleted in a specific order, this list"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_43bfbe60","line":22,"updated":"2016-01-15 11:09:48.000000000","message":"CONF is not used.","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from watcher_tempest_plugin import infra_optim_clients as clients"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# Resources must be deleted in a specific order, this list"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_a50a2c24","line":22,"in_reply_to":"da6ed579_43bfbe60","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                              host_aggregate\u003dNone, extra\u003dNone):"},{"line_number":96,"context_line":"        \"\"\"Wrapper utility for creating a test audit_template."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        :param description: A description of the audit template."},{"line_number":99,"context_line":"            if not supplied, a random value will be generated."},{"line_number":100,"context_line":"        :return: A tuple with The HTTP response and its body"},{"line_number":101,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_033a26e7","line":98,"updated":"2016-01-15 11:09:48.000000000","message":"nit: missing parameters in doctring\n-name\n-goal\nhost_aggregate\n-extrat","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                              host_aggregate\u003dNone, extra\u003dNone):"},{"line_number":96,"context_line":"        \"\"\"Wrapper utility for creating a test audit_template."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        :param description: A description of the audit template."},{"line_number":99,"context_line":"            if not supplied, a random value will be generated."},{"line_number":100,"context_line":"        :return: A tuple with The HTTP response and its body"},{"line_number":101,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_404a3e56","line":98,"in_reply_to":"da6ed579_033a26e7","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    def delete_audit_template(cls, audit_template_id):"},{"line_number":112,"context_line":"        \"\"\"Deletes a audit_template having the specified UUID."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        :param uuid: The unique identifier of the audit_template."},{"line_number":115,"context_line":"        :return: Server response."},{"line_number":116,"context_line":"        \"\"\""},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_431b3e81","line":114,"updated":"2016-01-15 11:09:48.000000000","message":"nit: /uuid/audit_template_id/","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    def delete_audit_template(cls, audit_template_id):"},{"line_number":112,"context_line":"        \"\"\"Deletes a audit_template having the specified UUID."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        :param uuid: The unique identifier of the audit_template."},{"line_number":115,"context_line":"        :return: Server response."},{"line_number":116,"context_line":"        \"\"\""},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_40c79e63","line":114,"in_reply_to":"da6ed579_431b3e81","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"}],"watcher_tempest_plugin/tests/api/admin/test_api_discovery.py":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"8b167a57abce0aeea32643240386ce86a1a767b7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Unless required by applicable law or agreed to in writing, software"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_8e77d801","line":4,"updated":"2016-01-19 10:47:31.000000000","message":"Can you change the license to b\u003c\u003ecom 2016","commit_id":"c9cca342cfe3bb347327ecda8a5f43f668037441"}],"watcher_tempest_plugin/tests/api/admin/test_audit_template.py":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def resource_setup(cls):"},{"line_number":32,"context_line":"        super(TestCreateDeleteAuditTemplate, cls).resource_setup()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _assertExpected(self, expected, actual):"},{"line_number":35,"context_line":"        # Check if not expected keys/values exists in actual response body"},{"line_number":36,"context_line":"        for key, value in six.iteritems(expected):"},{"line_number":37,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_46290c89","line":34,"updated":"2016-01-15 11:09:48.000000000","message":"nit:CamelCase","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def resource_setup(cls):"},{"line_number":32,"context_line":"        super(TestCreateDeleteAuditTemplate, cls).resource_setup()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _assertExpected(self, expected, actual):"},{"line_number":35,"context_line":"        # Check if not expected keys/values exists in actual response body"},{"line_number":36,"context_line":"        for key, value in six.iteritems(expected):"},{"line_number":37,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_60998278","line":34,"in_reply_to":"da6ed579_46290c89","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"9175012bc73eb442576489f823fe61c70b7eb8ef","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        super(TestAuditTemplate, cls).resource_setup()"},{"line_number":89,"context_line":"        _, cls.audit_template \u003d cls.create_audit_template()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _assertExpected(self, expected, actual):"},{"line_number":92,"context_line":"        # Check if not expected keys/values exists in actual response body"},{"line_number":93,"context_line":"        for key, value in six.iteritems(expected):"},{"line_number":94,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_866144d5","line":91,"updated":"2016-01-15 11:09:48.000000000","message":"nit:CamelCase","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        super(TestAuditTemplate, cls).resource_setup()"},{"line_number":89,"context_line":"        _, cls.audit_template \u003d cls.create_audit_template()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _assertExpected(self, expected, actual):"},{"line_number":92,"context_line":"        # Check if not expected keys/values exists in actual response body"},{"line_number":93,"context_line":"        for key, value in six.iteritems(expected):"},{"line_number":94,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_c0806ef9","line":91,"in_reply_to":"da6ed579_866144d5","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"7321c4462f13b781076a542415ec5d2ad24ff803","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        # Check if not expected keys/values exists in actual response body"},{"line_number":93,"context_line":"        for key, value in six.iteritems(expected):"},{"line_number":94,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027):"},{"line_number":95,"context_line":"                self.assertIn(key, actual)"},{"line_number":96,"context_line":"                self.assertEqual(value, actual[key])"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_d29936c5","line":95,"updated":"2016-01-15 12:23:09.000000000","message":"This function is duplicated. Can you merge ?","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"d2d8e37bc8acffd10cb4ab115e72e4804a4fa3ca","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        # Check if not expected keys/values exists in actual response body"},{"line_number":93,"context_line":"        for key, value in six.iteritems(expected):"},{"line_number":94,"context_line":"            if key not in (\u0027created_at\u0027, \u0027updated_at\u0027, \u0027deleted_at\u0027):"},{"line_number":95,"context_line":"                self.assertIn(key, actual)"},{"line_number":96,"context_line":"                self.assertEqual(value, actual[key])"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_e0833201","line":95,"in_reply_to":"da6ed579_d29936c5","updated":"2016-01-15 17:23:06.000000000","message":"Done","commit_id":"1f85bb691ba060999c00e8295fef1a145a6706eb"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"8b167a57abce0aeea32643240386ce86a1a767b7","unresolved":false,"context_lines":[{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":9,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_0e5a0884","line":6,"updated":"2016-01-19 10:47:31.000000000","message":"Can you change the license to b\u003c\u003ecom 2016","commit_id":"c9cca342cfe3bb347327ecda8a5f43f668037441"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"8b167a57abce0aeea32643240386ce86a1a767b7","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        _, body \u003d self.client.list_audit_templates(limit\u003d3)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        next_marker \u003d body[\u0027audit_templates\u0027][-1][\u0027uuid\u0027]"},{"line_number":132,"context_line":"        self.assertIn(next_marker, body[\u0027next\u0027])"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":135,"context_line":"    def test_update_audit_template_replace(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_21f83de5","line":132,"updated":"2016-01-19 10:47:31.000000000","message":"It\u0027s seem that you want to check that we have only 3  audit-template but you don\u0027t have an assert to verify.\nCan you please fix that ?","commit_id":"c9cca342cfe3bb347327ecda8a5f43f668037441"}],"watcher_tempest_tests/config.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e22fbcb6c50b7719165c653da4254ce82d4fb3b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":15,"context_line":"# limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from __future__ import print_function"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_83b17b03","line":17,"range":{"start_line":17,"start_character":23,"end_line":17,"end_character":37},"updated":"2016-01-11 10:14:21.000000000","message":"\u0027print_function\u0027 is not used","commit_id":"b71fe70cacfbcdb902496800f5437cb731611ec0"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e22fbcb6c50b7719165c653da4254ce82d4fb3b","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from tempest import config  # noqa"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"service_available_group \u003d cfg.OptGroup(name\u003d\"service_available\","}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_03efcbe9","line":21,"range":{"start_line":21,"start_character":20,"end_line":21,"end_character":26},"updated":"2016-01-11 10:14:21.000000000","message":"\u0027config\u0027 is not used","commit_id":"b71fe70cacfbcdb902496800f5437cb731611ec0"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":15,"context_line":"# limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from __future__ import print_function"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_2e7adaf1","line":17,"updated":"2016-01-11 19:46:39.000000000","message":"print_function not used","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":15,"context_line":"# limitations under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from __future__ import print_function"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_20d36e3a","line":17,"in_reply_to":"fa69d971_2e7adaf1","updated":"2016-01-12 10:48:32.000000000","message":"Removed","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from tempest import config  # noqa"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"service_available_group \u003d cfg.OptGroup(name\u003d\"service_available\","}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_ce245e0e","line":21,"updated":"2016-01-11 19:46:39.000000000","message":"What is this being imported for?","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from tempest import config  # noqa"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"service_available_group \u003d cfg.OptGroup(name\u003d\"service_available\","}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_a0e75e11","line":21,"in_reply_to":"fa69d971_ce245e0e","updated":"2016-01-12 10:48:32.000000000","message":"It\u0027s actually useless, so I\u0027ll remove it as well","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"}],"watcher_tempest_tests/infra_optim_clients.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e22fbcb6c50b7719165c653da4254ce82d4fb3b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            self.auth_provider, \u0027infra-optim\u0027, CONF.identity.region)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class AltManager(Manager):"},{"line_number":35,"context_line":"    def __init__(self, service\u003dNone):"},{"line_number":36,"context_line":"        super(AltManager, self).__init__("},{"line_number":37,"context_line":"            creds_factory.get_configured_credentials(\u0027alt_user\u0027), service)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_59405634","line":34,"range":{"start_line":34,"start_character":6,"end_line":34,"end_character":16},"updated":"2016-01-11 10:14:21.000000000","message":"This class is not used. We can remove it.","commit_id":"b71fe70cacfbcdb902496800f5437cb731611ec0"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e22fbcb6c50b7719165c653da4254ce82d4fb3b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            creds_factory.get_configured_credentials(\u0027alt_user\u0027), service)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class AdminManager(Manager):"},{"line_number":41,"context_line":"    def __init__(self, service\u003dNone):"},{"line_number":42,"context_line":"        super(AdminManager, self).__init__("},{"line_number":43,"context_line":"            creds_factory.get_configured_credentials(\u0027identity_admin\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_19465e4f","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":18},"updated":"2016-01-11 10:14:21.000000000","message":"This class is not used. We can remove it.","commit_id":"b71fe70cacfbcdb902496800f5437cb731611ec0"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# class Manager(BaseManager):"},{"line_number":48,"context_line":"#     def __init__(self, service\u003dNone, api_microversions\u003dNone):"},{"line_number":49,"context_line":"#         super(Manager, self).__init__("},{"line_number":50,"context_line":"#             creds_factory.get_configured_credentials(\u0027user\u0027),"},{"line_number":51,"context_line":"#             service,"},{"line_number":52,"context_line":"#             api_microversions"},{"line_number":53,"context_line":"#         )"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# class AltManager(BaseManager):"},{"line_number":57,"context_line":"#     def __init__(self, service\u003dNone, api_microversions\u003dNone):"},{"line_number":58,"context_line":"#         super(AltManager, self).__init__("},{"line_number":59,"context_line":"#             creds_factory.get_configured_credentials(\u0027alt_user\u0027),"},{"line_number":60,"context_line":"#             service,"},{"line_number":61,"context_line":"#             api_microversions"},{"line_number":62,"context_line":"#         )"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_d0ef171b","line":62,"range":{"start_line":47,"start_character":0,"end_line":62,"end_character":11},"updated":"2016-01-11 19:46:39.000000000","message":"Is this needed?","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# class Manager(BaseManager):"},{"line_number":48,"context_line":"#     def __init__(self, service\u003dNone, api_microversions\u003dNone):"},{"line_number":49,"context_line":"#         super(Manager, self).__init__("},{"line_number":50,"context_line":"#             creds_factory.get_configured_credentials(\u0027user\u0027),"},{"line_number":51,"context_line":"#             service,"},{"line_number":52,"context_line":"#             api_microversions"},{"line_number":53,"context_line":"#         )"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# class AltManager(BaseManager):"},{"line_number":57,"context_line":"#     def __init__(self, service\u003dNone, api_microversions\u003dNone):"},{"line_number":58,"context_line":"#         super(AltManager, self).__init__("},{"line_number":59,"context_line":"#             creds_factory.get_configured_credentials(\u0027alt_user\u0027),"},{"line_number":60,"context_line":"#             service,"},{"line_number":61,"context_line":"#             api_microversions"},{"line_number":62,"context_line":"#         )"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_60c88675","line":62,"range":{"start_line":47,"start_character":0,"end_line":62,"end_character":11},"in_reply_to":"fa69d971_d0ef171b","updated":"2016-01-12 10:48:32.000000000","message":"I will remove it","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"}],"watcher_tempest_tests/plugin.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e22fbcb6c50b7719165c653da4254ce82d4fb3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fa69d971_23444fb5","line":40,"updated":"2016-01-11 10:14:21.000000000","message":"Maybe remove these commented lines","commit_id":"b71fe70cacfbcdb902496800f5437cb731611ec0"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class WatcherTempestPlugin(plugins.TempestPlugin):"},{"line_number":24,"context_line":"    def load_tests(self):"},{"line_number":25,"context_line":"        base_path \u003d os.path.split("},{"line_number":26,"context_line":"            os.path.dirname(os.path.abspath(watcher.__file__)))[0]"},{"line_number":27,"context_line":"        relative_test_dir \u003d os.path.join(\"watcher_tempest_tests\", \"tests\")"},{"line_number":28,"context_line":"        full_test_dir \u003d os.path.join(base_path, relative_test_dir)"},{"line_number":29,"context_line":"        return full_test_dir, base_path"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_8e5c261a","line":26,"range":{"start_line":26,"start_character":44,"end_line":26,"end_character":60},"updated":"2016-01-11 19:46:39.000000000","message":"Any reason we\u0027re importing watcher and doing this instead of following what the cookie cutter repo does?\n\nhttps://github.com/openstack/tempest-plugin-cookiecutter/blob/master/%7B%7Bcookiecutter.repo_name%7D%7D/%7B%7Bcookiecutter.repo_name%7D%7D_tempest_plugin/plugin.py#L27-L28","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class WatcherTempestPlugin(plugins.TempestPlugin):"},{"line_number":24,"context_line":"    def load_tests(self):"},{"line_number":25,"context_line":"        base_path \u003d os.path.split("},{"line_number":26,"context_line":"            os.path.dirname(os.path.abspath(watcher.__file__)))[0]"},{"line_number":27,"context_line":"        relative_test_dir \u003d os.path.join(\"watcher_tempest_tests\", \"tests\")"},{"line_number":28,"context_line":"        full_test_dir \u003d os.path.join(base_path, relative_test_dir)"},{"line_number":29,"context_line":"        return full_test_dir, base_path"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_80db351b","line":26,"range":{"start_line":26,"start_character":44,"end_line":26,"end_character":60},"in_reply_to":"fa69d971_8e5c261a","updated":"2016-01-12 10:48:32.000000000","message":"Done","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"}],"watcher_tempest_tests/services/infra_optim/v1/json/client.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fa69d971_8e4f4633","updated":"2016-01-11 19:46:39.000000000","message":"Would it make sense to rename all of the infra_optim references to watcher?  It seems like this class would make sense to be called \"WatcherClientJSON\" IMO.","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"da6ed579_d17b467a","in_reply_to":"fa69d971_8e4f4633","updated":"2016-01-12 10:48:32.000000000","message":"For the naming of the client, I couldn\u0027t find any strict rule for the naming of the clients. However, if you have a look at the services clients available in the tempest repository (see https://github.com/openstack/tempest/tree/master/tempest/services), you\u0027ll see that they are all named after their respective service type.\n\nSo if you take the example of Manila or Congress which are implementing tempest plugins, they named their clients \"share\" (see http://docs.openstack.org/developer/manila/adminref/quick_start.html#registration-in-keystone) and \"policy\" (see https://github.com/openstack/congress/blob/master/README.rst) respectively.","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        audit_template \u003d {"},{"line_number":96,"context_line":"            \u0027name\u0027: parameters.get(\u0027name\u0027, unique_name),"},{"line_number":97,"context_line":"            \u0027description\u0027: parameters.get(\u0027description\u0027, \u0027AT Description\u0027),"},{"line_number":98,"context_line":"            \u0027goal\u0027: parameters.get(\u0027goal\u0027, \u0027DUMMY\u0027),"},{"line_number":99,"context_line":"            \u0027host_aggregate\u0027: parameters.get(\u0027host_aggregate\u0027, 1),"},{"line_number":100,"context_line":"            \u0027extra\u0027: parameters.get(\u0027extra\u0027, {}),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_6ec5325a","line":97,"range":{"start_line":97,"start_character":58,"end_line":97,"end_character":60},"updated":"2016-01-11 19:46:39.000000000","message":"Audit Template, or would it make sense to have the default be an empty string instead?","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        audit_template \u003d {"},{"line_number":96,"context_line":"            \u0027name\u0027: parameters.get(\u0027name\u0027, unique_name),"},{"line_number":97,"context_line":"            \u0027description\u0027: parameters.get(\u0027description\u0027, \u0027AT Description\u0027),"},{"line_number":98,"context_line":"            \u0027goal\u0027: parameters.get(\u0027goal\u0027, \u0027DUMMY\u0027),"},{"line_number":99,"context_line":"            \u0027host_aggregate\u0027: parameters.get(\u0027host_aggregate\u0027, 1),"},{"line_number":100,"context_line":"            \u0027extra\u0027: parameters.get(\u0027extra\u0027, {}),"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_71c13a2e","line":97,"range":{"start_line":97,"start_character":58,"end_line":97,"end_character":60},"in_reply_to":"fa69d971_6ec5325a","updated":"2016-01-12 10:48:32.000000000","message":"Done","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"}],"watcher_tempest_tests/tests/api/admin/base.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    @creates(\u0027audit_template\u0027)"},{"line_number":97,"context_line":"    def create_audit_template(cls, name\u003dNone, description\u003dNone, goal\u003dNone,"},{"line_number":98,"context_line":"                              host_aggregate\u003dNone, extra\u003dNone,"},{"line_number":99,"context_line":"                              expect_errors\u003dFalse):"},{"line_number":100,"context_line":"        \"\"\"Wrapper utility for creating test audit_template."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        :param description: A description of the audit template."}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_10612f39","line":99,"range":{"start_line":99,"start_character":30,"end_line":99,"end_character":49},"updated":"2016-01-11 19:46:39.000000000","message":"Is this used anywhere?","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    @creates(\u0027audit_template\u0027)"},{"line_number":97,"context_line":"    def create_audit_template(cls, name\u003dNone, description\u003dNone, goal\u003dNone,"},{"line_number":98,"context_line":"                              host_aggregate\u003dNone, extra\u003dNone,"},{"line_number":99,"context_line":"                              expect_errors\u003dFalse):"},{"line_number":100,"context_line":"        \"\"\"Wrapper utility for creating test audit_template."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        :param description: A description of the audit template."}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_317e62e5","line":99,"range":{"start_line":99,"start_character":30,"end_line":99,"end_character":49},"in_reply_to":"fa69d971_10612f39","updated":"2016-01-12 10:48:32.000000000","message":"As you point out, this parameter is unused, so I just removed it.","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"}],"watcher_tempest_tests/tests/api/admin/test_audit_template.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self._assertExpected(self.audit_template, audit_template)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    # @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":92,"context_line":"    # def test_show_audit_template_by_goal(self):"},{"line_number":93,"context_line":"    #     _, audit_template \u003d self.client.\\"},{"line_number":94,"context_line":"    #         show_audit_template_by_goal(self.audit_template[\u0027goal\u0027])"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    #     self._assertExpected(self.audit_template,"},{"line_number":97,"context_line":"    #                          audit_template[\u0027audit_templates\u0027][0])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    # @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":100,"context_line":"    # def test_show_audit_template_by_host_aggregate(self):"},{"line_number":101,"context_line":"    #     _, audit_template \u003d self.client.\\"},{"line_number":102,"context_line":"    #         show_audit_template_by_host_aggregate("},{"line_number":103,"context_line":"    #             self.audit_template[\u0027host_aggregate\u0027])"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    #     self._assertExpected(self.audit_template,"},{"line_number":106,"context_line":"    #                          audit_template[\u0027audit_templates\u0027][0])"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":109,"context_line":"    def test_show_audit_template_with_links(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_70df4bd6","line":106,"range":{"start_line":91,"start_character":3,"end_line":106,"end_character":68},"updated":"2016-01-11 19:46:39.000000000","message":"?","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self._assertExpected(self.audit_template, audit_template)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    # @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":92,"context_line":"    # def test_show_audit_template_by_goal(self):"},{"line_number":93,"context_line":"    #     _, audit_template \u003d self.client.\\"},{"line_number":94,"context_line":"    #         show_audit_template_by_goal(self.audit_template[\u0027goal\u0027])"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    #     self._assertExpected(self.audit_template,"},{"line_number":97,"context_line":"    #                          audit_template[\u0027audit_templates\u0027][0])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    # @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":100,"context_line":"    # def test_show_audit_template_by_host_aggregate(self):"},{"line_number":101,"context_line":"    #     _, audit_template \u003d self.client.\\"},{"line_number":102,"context_line":"    #         show_audit_template_by_host_aggregate("},{"line_number":103,"context_line":"    #             self.audit_template[\u0027host_aggregate\u0027])"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    #     self._assertExpected(self.audit_template,"},{"line_number":106,"context_line":"    #                          audit_template[\u0027audit_templates\u0027][0])"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":109,"context_line":"    def test_show_audit_template_with_links(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_80e7b53f","line":106,"range":{"start_line":91,"start_character":3,"end_line":106,"end_character":68},"in_reply_to":"fa69d971_70df4bd6","updated":"2016-01-12 10:48:32.000000000","message":"These tests are currently failing due to some know issues. So following your interrogation, I made it clearer by uncommenting them by wrapping them with an @skip indicating the bug that needs to be fixed to be able to run them successfully.","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"4d2224d4b9444799f66993fb70485e161208afba","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        _, body \u003d self.client.show_audit_template(body[\u0027uuid\u0027])"},{"line_number":252,"context_line":"        self.assertEqual(extra, body[\u0027extra\u0027])"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    # @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":255,"context_line":"    # def test_audit_template_audit_list(self):"},{"line_number":256,"context_line":"    #     _, audit \u003d self.create_audit(self.audit_template[\u0027uuid\u0027])"},{"line_number":257,"context_line":"    #     _, body \u003d self.client.list_audit_template_audits("},{"line_number":258,"context_line":"    #         self.audit_template[\u0027uuid\u0027])"},{"line_number":259,"context_line":"    #     self.assertIn(audit[\u0027uuid\u0027], [n[\u0027uuid\u0027] for n in body[\u0027audits\u0027]])"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_d0e4f7a8","line":259,"range":{"start_line":254,"start_character":4,"end_line":259,"end_character":75},"updated":"2016-01-11 19:46:39.000000000","message":"?","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"176c51b2404464b887ecbcad337667d046098e34","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        _, body \u003d self.client.show_audit_template(body[\u0027uuid\u0027])"},{"line_number":252,"context_line":"        self.assertEqual(extra, body[\u0027extra\u0027])"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    # @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":255,"context_line":"    # def test_audit_template_audit_list(self):"},{"line_number":256,"context_line":"    #     _, audit \u003d self.create_audit(self.audit_template[\u0027uuid\u0027])"},{"line_number":257,"context_line":"    #     _, body \u003d self.client.list_audit_template_audits("},{"line_number":258,"context_line":"    #         self.audit_template[\u0027uuid\u0027])"},{"line_number":259,"context_line":"    #     self.assertIn(audit[\u0027uuid\u0027], [n[\u0027uuid\u0027] for n in body[\u0027audits\u0027]])"}],"source_content_type":"text/x-python","patch_set":8,"id":"da6ed579_0041850b","line":259,"range":{"start_line":254,"start_character":4,"end_line":259,"end_character":75},"in_reply_to":"fa69d971_d0e4f7a8","updated":"2016-01-12 10:48:32.000000000","message":"Removed from this patchset but will be present in a separate one","commit_id":"92b104436c57263ca7f8ee0b65bd718c103b7445"}]}
