)]}'
{"etc/rally/rally.conf.sample":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"# for its status. (floating point value)"},{"line_number":212,"context_line":"#manila_share_create_prepoll_delay \u003d 2.0"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"# Time to wait in seconds for manila share to be created. (floating"},{"line_number":215,"context_line":"# point value)"},{"line_number":216,"context_line":"#manila_share_create_timeout \u003d 300.0"},{"line_number":217,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"7a016987_7bf823c5","line":214,"updated":"2015-05-25 21:25:28.000000000","message":"just (float)","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":211,"context_line":"# for its status. (floating point value)"},{"line_number":212,"context_line":"#manila_share_create_prepoll_delay \u003d 2.0"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"# Time to wait in seconds for manila share to be created. (floating"},{"line_number":215,"context_line":"# point value)"},{"line_number":216,"context_line":"#manila_share_create_timeout \u003d 300.0"},{"line_number":217,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"7a016987_7b5dc347","line":214,"in_reply_to":"7a016987_7bf823c5","updated":"2015-05-25 22:20:25.000000000","message":"First, this file is autogenerated. Second, it is done for consistency with existing descriptions.","commit_id":"67b20769664efb15476b237a560a7370094c178b"}],"rally-jobs/rally-manila-no-ss.yaml":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8a214633af5f8c39760d0381a6f909f732a89334","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      context:"},{"line_number":11,"context_line":"        users:"},{"line_number":12,"context_line":"          tenants: 1"},{"line_number":13,"context_line":"          users_per_tenant: 1"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1af86dd1_fcf629d6","line":13,"updated":"2015-06-12 18:11:27.000000000","message":"please add sla section with failure_rate max: 0 (like in other jobs) otherwise this won\u0027t check anything...","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7a122c69af7c48d97b12f9238e98e8d9e69bb2c4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      context:"},{"line_number":11,"context_line":"        users:"},{"line_number":12,"context_line":"          tenants: 1"},{"line_number":13,"context_line":"          users_per_tenant: 1"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1af86dd1_d037d1e1","line":13,"in_reply_to":"1af86dd1_fcf629d6","updated":"2015-06-12 18:21:26.000000000","message":"Done","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"}],"rally-jobs/rally-manila.yaml":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8a214633af5f8c39760d0381a6f909f732a89334","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      context:"},{"line_number":11,"context_line":"        users:"},{"line_number":12,"context_line":"          tenants: 1"},{"line_number":13,"context_line":"          users_per_tenant: 1"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1af86dd1_3c2ba132","line":13,"updated":"2015-06-12 18:11:27.000000000","message":"same here","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7a122c69af7c48d97b12f9238e98e8d9e69bb2c4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      context:"},{"line_number":11,"context_line":"        users:"},{"line_number":12,"context_line":"          tenants: 1"},{"line_number":13,"context_line":"          users_per_tenant: 1"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"1af86dd1_b03455de","line":13,"in_reply_to":"1af86dd1_3c2ba132","updated":"2015-06-12 18:21:26.000000000","message":"Done","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"}],"rally/common/opts.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import itertools"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_db0837dc","line":13,"updated":"2015-05-25 21:25:28.000000000","message":"Do we really miss comment about that file purpose?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import itertools"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5b5a0752","line":13,"in_reply_to":"7a016987_db0837dc","updated":"2015-05-25 22:20:25.000000000","message":"This file is used for config sample generation. Anyway, nothing to do within this commit.","commit_id":"67b20769664efb15476b237a560a7370094c178b"}],"rally/osclients.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def manila(self, version\u003d\"1\"):"},{"line_number":244,"context_line":"        \"\"\"Return manila client.\"\"\""},{"line_number":245,"context_line":"        from manilaclient import client as manila"},{"line_number":246,"context_line":"        client \u003d manila.Client("},{"line_number":247,"context_line":"            version,"},{"line_number":248,"context_line":"            region_name\u003dself.endpoint.region_name,"},{"line_number":249,"context_line":"            http_log_debug\u003dlogging.is_debug(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_3b02abb5","line":246,"updated":"2015-05-25 21:25:28.000000000","message":"please name this variable manila_client.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def manila(self, version\u003d\"1\"):"},{"line_number":244,"context_line":"        \"\"\"Return manila client.\"\"\""},{"line_number":245,"context_line":"        from manilaclient import client as manila"},{"line_number":246,"context_line":"        client \u003d manila.Client("},{"line_number":247,"context_line":"            version,"},{"line_number":248,"context_line":"            region_name\u003dself.endpoint.region_name,"},{"line_number":249,"context_line":"            http_log_debug\u003dlogging.is_debug(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_4df00aca","line":246,"in_reply_to":"7a016987_1b7dafb1","updated":"2015-05-25 22:53:12.000000000","message":"So what? You just trying to say me that \"it was done that way before\".\n\nOK, it was done that way. But that way is completely broken.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def manila(self, version\u003d\"1\"):"},{"line_number":244,"context_line":"        \"\"\"Return manila client.\"\"\""},{"line_number":245,"context_line":"        from manilaclient import client as manila"},{"line_number":246,"context_line":"        client \u003d manila.Client("},{"line_number":247,"context_line":"            version,"},{"line_number":248,"context_line":"            region_name\u003dself.endpoint.region_name,"},{"line_number":249,"context_line":"            http_log_debug\u003dlogging.is_debug(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_1b7dafb1","line":246,"in_reply_to":"7a016987_3b02abb5","updated":"2015-05-25 22:20:25.000000000","message":"Look at neighbour methods. It is completely consistent with them.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    def manila(self, version\u003d\"1\"):"},{"line_number":244,"context_line":"        \"\"\"Return manila client.\"\"\""},{"line_number":245,"context_line":"        from manilaclient import client as manila"},{"line_number":246,"context_line":"        client \u003d manila.Client("},{"line_number":247,"context_line":"            version,"},{"line_number":248,"context_line":"            region_name\u003dself.endpoint.region_name,"},{"line_number":249,"context_line":"            http_log_debug\u003dlogging.is_debug(),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bada0be8","line":246,"in_reply_to":"7a016987_4df00aca","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"}],"rally/plugins/openstack/scenarios/manila/shares.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8a214633af5f8c39760d0381a6f909f732a89334","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from rally.benchmark.scenarios import base"},{"line_number":17,"context_line":"from rally.benchmark import validation"},{"line_number":18,"context_line":"from rally import consts"},{"line_number":19,"context_line":"from rally.plugins.openstack.scenarios.manila import utils as manila_utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ManilaShares(manila_utils.ManilaScenario):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af86dd1_7cd8f953","line":19,"updated":"2015-06-12 18:11:27.000000000","message":"can you just import utils here?","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7a122c69af7c48d97b12f9238e98e8d9e69bb2c4","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from rally.benchmark.scenarios import base"},{"line_number":17,"context_line":"from rally.benchmark import validation"},{"line_number":18,"context_line":"from rally import consts"},{"line_number":19,"context_line":"from rally.plugins.openstack.scenarios.manila import utils as manila_utils"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class ManilaShares(manila_utils.ManilaScenario):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af86dd1_50a081f4","line":19,"in_reply_to":"1af86dd1_7cd8f953","updated":"2015-06-12 18:21:26.000000000","message":"Done","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8a214633af5f8c39760d0381a6f909f732a89334","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class ManilaShares(manila_utils.ManilaScenario):"},{"line_number":23,"context_line":"    \"\"\"Benchmark scenarios for Manila shares.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @validation.required_clients(\"manila\")"},{"line_number":26,"context_line":"    @validation.required_services(consts.Service.MANILA)"},{"line_number":27,"context_line":"    @base.scenario()"},{"line_number":28,"context_line":"    def list_shares(self, detailed\u003dTrue, search_opts\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af86dd1_3ce28104","line":25,"updated":"2015-06-12 18:11:27.000000000","message":"we don\u0027t need this because manila client is already in requirements.","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7a122c69af7c48d97b12f9238e98e8d9e69bb2c4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class ManilaShares(manila_utils.ManilaScenario):"},{"line_number":23,"context_line":"    \"\"\"Benchmark scenarios for Manila shares.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @validation.required_clients(\"manila\")"},{"line_number":26,"context_line":"    @validation.required_services(consts.Service.MANILA)"},{"line_number":27,"context_line":"    @base.scenario()"},{"line_number":28,"context_line":"    def list_shares(self, detailed\u003dTrue, search_opts\u003dNone):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af86dd1_f0af6de1","line":25,"in_reply_to":"1af86dd1_3ce28104","updated":"2015-06-12 18:21:26.000000000","message":"Done","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8a214633af5f8c39760d0381a6f909f732a89334","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"\"\"Benchmark scenarios for Manila shares.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @validation.required_clients(\"manila\")"},{"line_number":26,"context_line":"    @validation.required_services(consts.Service.MANILA)"},{"line_number":27,"context_line":"    @base.scenario()"},{"line_number":28,"context_line":"    def list_shares(self, detailed\u003dTrue, search_opts\u003dNone):"},{"line_number":29,"context_line":"        \"\"\"Basic scenario for \u0027share list\u0027 operation."}],"source_content_type":"text/x-python","patch_set":19,"id":"1af86dd1_fc92a956","line":26,"updated":"2015-06-12 18:11:27.000000000","message":"you should add validation: \n\n @validation.required_openstack(users\u003dTrue)","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7a122c69af7c48d97b12f9238e98e8d9e69bb2c4","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"\"\"Benchmark scenarios for Manila shares.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @validation.required_clients(\"manila\")"},{"line_number":26,"context_line":"    @validation.required_services(consts.Service.MANILA)"},{"line_number":27,"context_line":"    @base.scenario()"},{"line_number":28,"context_line":"    def list_shares(self, detailed\u003dTrue, search_opts\u003dNone):"},{"line_number":29,"context_line":"        \"\"\"Basic scenario for \u0027share list\u0027 operation."}],"source_content_type":"text/x-python","patch_set":19,"id":"1af86dd1_b0b9f530","line":26,"in_reply_to":"1af86dd1_fc92a956","updated":"2015-06-12 18:21:26.000000000","message":"Done","commit_id":"7ab5dd8c21d3fa119383f7c94df9e0e67be5b958"}],"rally/plugins/openstack/scenarios/manila/utils.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.FloatOpt("},{"line_number":26,"context_line":"        \"manila_share_create_prepoll_delay\","},{"line_number":27,"context_line":"        default\u003d2.0,"},{"line_number":28,"context_line":"        help\u003d\"Time to sleep in seconds after creating a resource before \""},{"line_number":29,"context_line":"             \"polling for its status.\"),"},{"line_number":30,"context_line":"    cfg.FloatOpt("},{"line_number":31,"context_line":"        \"manila_share_create_timeout\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bb245b60","line":28,"updated":"2015-05-25 21:25:28.000000000","message":"Delay between creating a resource and polling for its status.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.FloatOpt("},{"line_number":26,"context_line":"        \"manila_share_create_prepoll_delay\","},{"line_number":27,"context_line":"        default\u003d2.0,"},{"line_number":28,"context_line":"        help\u003d\"Time to sleep in seconds after creating a resource before \""},{"line_number":29,"context_line":"             \"polling for its status.\"),"},{"line_number":30,"context_line":"    cfg.FloatOpt("},{"line_number":31,"context_line":"        \"manila_share_create_timeout\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_edbd76d8","line":28,"in_reply_to":"7a016987_ada89edc","updated":"2015-05-25 22:53:12.000000000","message":"Of course. And please file a bug for the Cinder Project to fix.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.FloatOpt("},{"line_number":26,"context_line":"        \"manila_share_create_prepoll_delay\","},{"line_number":27,"context_line":"        default\u003d2.0,"},{"line_number":28,"context_line":"        help\u003d\"Time to sleep in seconds after creating a resource before \""},{"line_number":29,"context_line":"             \"polling for its status.\"),"},{"line_number":30,"context_line":"    cfg.FloatOpt("},{"line_number":31,"context_line":"        \"manila_share_create_timeout\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_ada89edc","line":28,"in_reply_to":"7a016987_bb245b60","updated":"2015-05-25 22:20:25.000000000","message":"This is copy-pasted from Cinder\u0027s help messages. You sure that you want me to change it?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    cfg.FloatOpt("},{"line_number":26,"context_line":"        \"manila_share_create_prepoll_delay\","},{"line_number":27,"context_line":"        default\u003d2.0,"},{"line_number":28,"context_line":"        help\u003d\"Time to sleep in seconds after creating a resource before \""},{"line_number":29,"context_line":"             \"polling for its status.\"),"},{"line_number":30,"context_line":"    cfg.FloatOpt("},{"line_number":31,"context_line":"        \"manila_share_create_timeout\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5d47914b","line":28,"in_reply_to":"7a016987_edbd76d8","updated":"2015-05-26 10:23:08.000000000","message":"I changed it in my commit, but I will not file a bug for Cinder project because I do not consider it a  bug.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    cfg.FloatOpt("},{"line_number":31,"context_line":"        \"manila_share_create_timeout\","},{"line_number":32,"context_line":"        default\u003d300.0,"},{"line_number":33,"context_line":"        help\u003d\"Time to wait in seconds for manila share to be created.\"),"},{"line_number":34,"context_line":"    cfg.FloatOpt("},{"line_number":35,"context_line":"        \"manila_share_create_poll_interval\","},{"line_number":36,"context_line":"        default\u003d3.0,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_9be07ffc","line":33,"updated":"2015-05-25 21:25:28.000000000","message":"Timeout for manila share creation.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    cfg.FloatOpt("},{"line_number":31,"context_line":"        \"manila_share_create_timeout\","},{"line_number":32,"context_line":"        default\u003d300.0,"},{"line_number":33,"context_line":"        help\u003d\"Time to wait in seconds for manila share to be created.\"),"},{"line_number":34,"context_line":"    cfg.FloatOpt("},{"line_number":35,"context_line":"        \"manila_share_create_poll_interval\","},{"line_number":36,"context_line":"        default\u003d3.0,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_fd563dcd","line":33,"in_reply_to":"7a016987_8dae02e6","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    cfg.FloatOpt("},{"line_number":31,"context_line":"        \"manila_share_create_timeout\","},{"line_number":32,"context_line":"        default\u003d300.0,"},{"line_number":33,"context_line":"        help\u003d\"Time to wait in seconds for manila share to be created.\"),"},{"line_number":34,"context_line":"    cfg.FloatOpt("},{"line_number":35,"context_line":"        \"manila_share_create_poll_interval\","},{"line_number":36,"context_line":"        default\u003d3.0,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_8dae02e6","line":33,"in_reply_to":"7a016987_9be07ffc","updated":"2015-05-25 22:20:25.000000000","message":"ditto","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.FloatOpt("},{"line_number":39,"context_line":"        \"manila_share_delete_timeout\","},{"line_number":40,"context_line":"        default\u003d180.0,"},{"line_number":41,"context_line":"        help\u003d\"Time to wait for manila share to be deleted.\"),"},{"line_number":42,"context_line":"    cfg.FloatOpt("},{"line_number":43,"context_line":"        \"manila_share_delete_poll_interval\","},{"line_number":44,"context_line":"        default\u003d2.0,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_7be6e317","line":41,"updated":"2015-05-25 21:25:28.000000000","message":"Deletion timeout for a manila share.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.FloatOpt("},{"line_number":39,"context_line":"        \"manila_share_delete_timeout\","},{"line_number":40,"context_line":"        default\u003d180.0,"},{"line_number":41,"context_line":"        help\u003d\"Time to wait for manila share to be deleted.\"),"},{"line_number":42,"context_line":"    cfg.FloatOpt("},{"line_number":43,"context_line":"        \"manila_share_delete_poll_interval\","},{"line_number":44,"context_line":"        default\u003d2.0,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bdf8c5c5","line":41,"in_reply_to":"7a016987_7be6e317","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @base.atomic_action_timer(\"manila.create_share\")"},{"line_number":57,"context_line":"    def _create_share(self, share_proto, size\u003d1, **kwargs):"},{"line_number":58,"context_line":"        \"\"\"Create one share."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :param share_proto: text -- share protocol for new share"},{"line_number":61,"context_line":"            available values are NFS, CIFS, GlusterFS and HDFS."}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_dba4b7ba","line":58,"updated":"2015-05-25 21:25:28.000000000","message":"a single share.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @base.atomic_action_timer(\"manila.create_share\")"},{"line_number":57,"context_line":"    def _create_share(self, share_proto, size\u003d1, **kwargs):"},{"line_number":58,"context_line":"        \"\"\"Create one share."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :param share_proto: text -- share protocol for new share"},{"line_number":61,"context_line":"            available values are NFS, CIFS, GlusterFS and HDFS."}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_7dc7ed64","line":58,"in_reply_to":"7a016987_dba4b7ba","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def _create_share(self, share_proto, size\u003d1, **kwargs):"},{"line_number":58,"context_line":"        \"\"\"Create one share."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :param share_proto: text -- share protocol for new share"},{"line_number":61,"context_line":"            available values are NFS, CIFS, GlusterFS and HDFS."},{"line_number":62,"context_line":"        :param size: int -- size of a share in GB"},{"line_number":63,"context_line":"        :param snapshot_id: text -- ID of the snapshot"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_7b94a343","line":60,"updated":"2015-05-25 21:25:28.000000000","message":"text is an array of strings. Please use `string\u0027 instead.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def _create_share(self, share_proto, size\u003d1, **kwargs):"},{"line_number":58,"context_line":"        \"\"\"Create one share."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :param share_proto: text -- share protocol for new share"},{"line_number":61,"context_line":"            available values are NFS, CIFS, GlusterFS and HDFS."},{"line_number":62,"context_line":"        :param size: int -- size of a share in GB"},{"line_number":63,"context_line":"        :param snapshot_id: text -- ID of the snapshot"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_3da055a5","line":60,"in_reply_to":"7a016987_7b94a343","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            kwargs[\"share_network\"] \u003d next(self.context.get(\"tenant\", {}).get("},{"line_number":75,"context_line":"                \"sn_iterator\"))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_9bb75ff5","line":77,"updated":"2015-05-25 21:25:28.000000000","message":"This is not the same as kwargs.get(\"name\") is None, because `name\u0027 can be a null-string.\n\nPlease check that in case of name\u003d\"\" this code path is expected.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            kwargs[\"share_network\"] \u003d next(self.context.get(\"tenant\", {}).get("},{"line_number":75,"context_line":"                \"sn_iterator\"))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_8dcde288","line":77,"in_reply_to":"7a016987_2db5ce30","updated":"2015-05-25 22:53:12.000000000","message":"I\u0027m not mean and you should learn English inb4 writing in it.\n\nYes, you have to distinguish whether your value is existing or if it is a non-null.\n\nBasically, here, user can supply a name\u003d\"\" and it should be a valid value to pass from yours code point of view.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b55b07706a8d0d31229fea3dca45b4eb94e8dbcc","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            kwargs[\"share_network\"] \u003d next(self.context.get(\"tenant\", {}).get("},{"line_number":75,"context_line":"                \"sn_iterator\"))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bca20e4a","line":77,"in_reply_to":"7a016987_8dcde288","updated":"2015-05-26 07:06:26.000000000","message":"I have to distinguish it in API. This method is used for not \"API\" functional testing, this one is used for stress testing, where we intent to distinguish shares created by Rally. So, it is intentional approach - to have name always. That is why I tried to clarify the intent of proposal. And there is no test case for empty name, that is true indeed.\n\nSorry, but it looks really strange to see proposals to learn English having mistakes in this proposal (Should be \"I didnt\u0027 mean it that way.\"). Moreover, just \"learn\" is abstract. Please, specify what exactly do you think was incorrect? Otherwise it is just demagogy. And yes, everyone should grow in everything he does. Also, it is not polite to say it that way, because it is unacceptable to disscuss \"persons\" in \"code\" review. Positive approach is to say what is wrong and why and not to say who is bad (all).","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            kwargs[\"share_network\"] \u003d next(self.context.get(\"tenant\", {}).get("},{"line_number":75,"context_line":"                \"sn_iterator\"))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_2db5ce30","line":77,"in_reply_to":"7a016987_9bb75ff5","updated":"2015-05-25 22:20:25.000000000","message":"You mean add test case for null-string?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":81,"context_line":"            share_proto, size, **kwargs)"},{"line_number":82,"context_line":"        time.sleep(CONF.benchmark.manila_share_create_prepoll_delay)"},{"line_number":83,"context_line":"        share \u003d bench_utils.wait_for("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_1bc48f5d","line":80,"updated":"2015-05-25 21:25:28.000000000","message":"I\u0027m not sure what this project expects of \u0027create\u0027 calls. Probably, the project expects that this is wrapped in a try/catch block.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":81,"context_line":"            share_proto, size, **kwargs)"},{"line_number":82,"context_line":"        time.sleep(CONF.benchmark.manila_share_create_prepoll_delay)"},{"line_number":83,"context_line":"        share \u003d bench_utils.wait_for("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_cd7aba77","line":80,"in_reply_to":"7a016987_1bc48f5d","updated":"2015-05-25 22:20:25.000000000","message":"And again, it is consistent with existing clients in rally.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":81,"context_line":"            share_proto, size, **kwargs)"},{"line_number":82,"context_line":"        time.sleep(CONF.benchmark.manila_share_create_prepoll_delay)"},{"line_number":83,"context_line":"        share \u003d bench_utils.wait_for("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_fde51ddc","line":80,"in_reply_to":"7a016987_4dc7ea64","updated":"2015-05-26 10:23:08.000000000","message":"There is no use case for wrapping exceptions here. If you have some specific case in mind, please share it. For the moment, I leave it as is.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":78,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":81,"context_line":"            share_proto, size, **kwargs)"},{"line_number":82,"context_line":"        time.sleep(CONF.benchmark.manila_share_create_prepoll_delay)"},{"line_number":83,"context_line":"        share \u003d bench_utils.wait_for("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_4dc7ea64","line":80,"in_reply_to":"7a016987_cd7aba77","updated":"2015-05-25 22:53:12.000000000","message":"OK, please fix the existing clients. Or make sure that the existing clients raise appropriate exceptions.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def _create_share_network(self, neutron_net_id\u003dNone,"},{"line_number":108,"context_line":"                              neutron_subnet_id\u003dNone,"},{"line_number":109,"context_line":"                              nova_net_id\u003dNone, name\u003dNone, description\u003dNone):"},{"line_number":110,"context_line":"        \"\"\"Create share network."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        :param neutron_net_id: text -- ID of Neutron network"},{"line_number":113,"context_line":"        :param neutron_subnet_id: text -- ID of Neutron subnet"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bba9fb92","line":110,"updated":"2015-05-25 21:25:28.000000000","message":"Create what network?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def _create_share_network(self, neutron_net_id\u003dNone,"},{"line_number":108,"context_line":"                              neutron_subnet_id\u003dNone,"},{"line_number":109,"context_line":"                              nova_net_id\u003dNone, name\u003dNone, description\u003dNone):"},{"line_number":110,"context_line":"        \"\"\"Create share network."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        :param neutron_net_id: text -- ID of Neutron network"},{"line_number":113,"context_line":"        :param neutron_subnet_id: text -- ID of Neutron subnet"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_2dc4ae5d","line":110,"in_reply_to":"7a016987_2d8cae7e","updated":"2015-05-25 22:53:12.000000000","message":"What?\n\nCan you please write this in English? Otherwise, please comment me in Russian or Ukranian to skype: pavel.boldin","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def _create_share_network(self, neutron_net_id\u003dNone,"},{"line_number":108,"context_line":"                              neutron_subnet_id\u003dNone,"},{"line_number":109,"context_line":"                              nova_net_id\u003dNone, name\u003dNone, description\u003dNone):"},{"line_number":110,"context_line":"        \"\"\"Create share network."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        :param neutron_net_id: text -- ID of Neutron network"},{"line_number":113,"context_line":"        :param neutron_subnet_id: text -- ID of Neutron subnet"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_2d8cae7e","line":110,"in_reply_to":"7a016987_bba9fb92","updated":"2015-05-25 22:20:25.000000000","message":"\"share network\" is meaning inside of Manila project. There is samenamed entity and related API.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @base.atomic_action_timer(\"manila.delete_share_network\")"},{"line_number":128,"context_line":"    def _delete_share_network(self, share_network):"},{"line_number":129,"context_line":"        \"\"\"Delete share network."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        :param security_service: instance of :class:`ShareNetwork`."},{"line_number":132,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_3b9e2b64","line":129,"updated":"2015-05-25 21:25:28.000000000","message":"Delete what network?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @base.atomic_action_timer(\"manila.delete_share_network\")"},{"line_number":128,"context_line":"    def _delete_share_network(self, share_network):"},{"line_number":129,"context_line":"        \"\"\"Delete share network."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        :param security_service: instance of :class:`ShareNetwork`."},{"line_number":132,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_0de8d215","line":129,"in_reply_to":"7a016987_3b9e2b64","updated":"2015-05-25 22:20:25.000000000","message":"ditto","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def _list_share_networks(self, detailed\u003dTrue, search_opts\u003dNone):"},{"line_number":142,"context_line":"        \"\"\"List share networks."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        :param detailed: bool -- defines either to return detailed list of"},{"line_number":145,"context_line":"            objects or not."},{"line_number":146,"context_line":"        :param search_opts: dict -- container of search opts such as"},{"line_number":147,"context_line":"            \"project_id\" and \"name\"."}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bb80dbf8","line":144,"updated":"2015-05-25 21:25:28.000000000","message":"Well, you seems to be new to Python. This is a duck-typing language. So, there is no bools/ints/strings. Just objects that can be used in such a way.\n\nAnd, therefore, `detailed\u0027 can be a value that just evaluates to the \u0027True\u0027 or \u0027False\u0027. Being a bool is not a requirement unless you assert isinstance(detailed, bool).","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def _list_share_networks(self, detailed\u003dTrue, search_opts\u003dNone):"},{"line_number":142,"context_line":"        \"\"\"List share networks."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        :param detailed: bool -- defines either to return detailed list of"},{"line_number":145,"context_line":"            objects or not."},{"line_number":146,"context_line":"        :param search_opts: dict -- container of search opts such as"},{"line_number":147,"context_line":"            \"project_id\" and \"name\"."}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_adae5e96","line":144,"in_reply_to":"7a016987_adcd3eb9","updated":"2015-05-25 22:53:12.000000000","message":"Are you responsible for all the possible ways humans thing? No, you are not.\n\nBecause I left you a comment with a solely purpose to ask you not to specify types of the values of the methods.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    def _list_share_networks(self, detailed\u003dTrue, search_opts\u003dNone):"},{"line_number":142,"context_line":"        \"\"\"List share networks."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        :param detailed: bool -- defines either to return detailed list of"},{"line_number":145,"context_line":"            objects or not."},{"line_number":146,"context_line":"        :param search_opts: dict -- container of search opts such as"},{"line_number":147,"context_line":"            \"project_id\" and \"name\"."}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_adcd3eb9","line":144,"in_reply_to":"7a016987_bb80dbf8","updated":"2015-05-25 22:20:25.000000000","message":"Lets assume I am new to Python. Saying \"bool\" here I inform user/dev/\"any person\" that this one is designed \"from human point of view\" as boolean.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                 name\u003dNone, description\u003dNone):"},{"line_number":170,"context_line":"        \"\"\"Create security service."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        \u0027Security service\u0027 is data container in Manila that stores info"},{"line_number":173,"context_line":"        about auth services \u0027Active Directory\u0027, \u0027Kerberos\u0027 and catalog"},{"line_number":174,"context_line":"        service \u0027LDAP\u0027 that should be used for shares."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_7b7b832a","line":172,"updated":"2015-05-25 21:25:28.000000000","message":"For Manila \u0027Security service\u0027 is just a data container storing info about authentication services such as \u0027Active Directory\u0027, \u0027Kerberos\u0027 or \u0027LDAP\u0027 used for shares.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                 name\u003dNone, description\u003dNone):"},{"line_number":170,"context_line":"        \"\"\"Create security service."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        \u0027Security service\u0027 is data container in Manila that stores info"},{"line_number":173,"context_line":"        about auth services \u0027Active Directory\u0027, \u0027Kerberos\u0027 and catalog"},{"line_number":174,"context_line":"        service \u0027LDAP\u0027 that should be used for shares."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_0d87b213","line":172,"in_reply_to":"7a016987_6dc0667d","updated":"2015-05-25 22:53:12.000000000","message":"?\n\nPlease learn a little of English language before using. On top of that, please learn a little of Python before commiting the patches.\n\nOverall, this docstring is bad and you should feel bad. Learning why this is a bad docstring is left for you as an exercise.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                                 name\u003dNone, description\u003dNone):"},{"line_number":170,"context_line":"        \"\"\"Create security service."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        \u0027Security service\u0027 is data container in Manila that stores info"},{"line_number":173,"context_line":"        about auth services \u0027Active Directory\u0027, \u0027Kerberos\u0027 and catalog"},{"line_number":174,"context_line":"        service \u0027LDAP\u0027 that should be used for shares."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_6dc0667d","line":172,"in_reply_to":"7a016987_7b7b832a","updated":"2015-05-25 22:20:25.000000000","message":"\"For\"? \n\n...\n\nIt is exactly \"should\" be used and not \"already\" used.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        :param password: password used by user"},{"line_number":183,"context_line":"        :param name: security service name"},{"line_number":184,"context_line":"        :param description: security service description"},{"line_number":185,"context_line":"        :rtype: :class:`SecurityService`"},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        security_service \u003d self.clients(\"manila\").security_services.create("},{"line_number":188,"context_line":"            type\u003dtype,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_db92774b","line":185,"updated":"2015-05-25 21:25:28.000000000","message":":rtype: or :returns?\n\nPlease be self-consistent.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        :param password: password used by user"},{"line_number":183,"context_line":"        :param name: security service name"},{"line_number":184,"context_line":"        :param description: security service description"},{"line_number":185,"context_line":"        :rtype: :class:`SecurityService`"},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        security_service \u003d self.clients(\"manila\").security_services.create("},{"line_number":188,"context_line":"            type\u003dtype,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_1d7d99e7","line":185,"in_reply_to":"7a016987_cd3f5a86","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        :param password: password used by user"},{"line_number":183,"context_line":"        :param name: security service name"},{"line_number":184,"context_line":"        :param description: security service description"},{"line_number":185,"context_line":"        :rtype: :class:`SecurityService`"},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        security_service \u003d self.clients(\"manila\").security_services.create("},{"line_number":188,"context_line":"            type\u003dtype,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_cd3f5a86","line":185,"in_reply_to":"7a016987_db92774b","updated":"2015-05-25 22:20:25.000000000","message":"Will update.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        :param description: security service description"},{"line_number":185,"context_line":"        :rtype: :class:`SecurityService`"},{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        security_service \u003d self.clients(\"manila\").security_services.create("},{"line_number":188,"context_line":"            type\u003dtype,"},{"line_number":189,"context_line":"            dns_ip\u003ddns_ip,"},{"line_number":190,"context_line":"            server\u003dserver,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bb97bb39","line":187,"updated":"2015-05-25 21:25:28.000000000","message":"Just\n return self.clients(\"manila)....","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7444139495a0bedfcfaa2c833473f25f8ccbdaa7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        :param share_network: either instance of ShareNetwork or str with ID"},{"line_number":70,"context_line":"        :param share_type: either instance of ShareType or str with ID"},{"line_number":71,"context_line":"        :param is_public: bool, whether to set share as public or not."},{"line_number":72,"context_line":"        :returns: instance of :class:`Share`"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if (self.context.get(\"tenant\", {}).get(\"share_networks\", []) and"},{"line_number":75,"context_line":"                not kwargs.get(\"share_network\")):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_69b84b2b","line":72,"updated":"2015-05-26 11:49:01.000000000","message":"AFAIK, it should be \u0027:return:\u0027, not \u0027:returns:\u0027.","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"6b41ef43e53192e17520c3a5f0514e3c1ef5d65d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        :param share_network: either instance of ShareNetwork or str with ID"},{"line_number":70,"context_line":"        :param share_type: either instance of ShareType or str with ID"},{"line_number":71,"context_line":"        :param is_public: bool, whether to set share as public or not."},{"line_number":72,"context_line":"        :returns: instance of :class:`Share`"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if (self.context.get(\"tenant\", {}).get(\"share_networks\", []) and"},{"line_number":75,"context_line":"                not kwargs.get(\"share_network\")):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_fb3e42d9","line":72,"in_reply_to":"7a016987_69b84b2b","updated":"2015-05-26 12:47:08.000000000","message":"Nope, we use :returns: everywhere.","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"6b41ef43e53192e17520c3a5f0514e3c1ef5d65d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if (self.context.get(\"tenant\", {}).get(\"share_networks\", []) and"},{"line_number":75,"context_line":"                not kwargs.get(\"share_network\")):"},{"line_number":76,"context_line":"            kwargs[\"share_network\"] \u003d next(self.context.get(\"tenant\", {}).get("},{"line_number":77,"context_line":"                \"sn_iterator\"))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if not kwargs.get(\"name\"):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_3e30489e","line":76,"updated":"2015-05-26 12:47:08.000000000","message":"Seems a bit strange to me that you use here this SN stuff that will be added only in the next patch. Maybe the context should be the first patch, not this patch with scenarios?","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7aced6143df15f647569f04855ad899cafda4868","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if (self.context.get(\"tenant\", {}).get(\"share_networks\", []) and"},{"line_number":75,"context_line":"                not kwargs.get(\"share_network\")):"},{"line_number":76,"context_line":"            kwargs[\"share_network\"] \u003d next(self.context.get(\"tenant\", {}).get("},{"line_number":77,"context_line":"                \"sn_iterator\"))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if not kwargs.get(\"name\"):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_50ccd660","line":76,"in_reply_to":"7a016987_3e30489e","updated":"2015-05-27 17:07:40.000000000","message":"Done","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"6b41ef43e53192e17520c3a5f0514e3c1ef5d65d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def _delete_share_network(self, share_network):"},{"line_number":131,"context_line":"        \"\"\"Delete share network."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        :param security_service: instance of :class:`ShareNetwork`."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        share_network.delete()"},{"line_number":136,"context_line":"        bench_utils.wait_for_delete("}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_5efe6406","line":133,"updated":"2015-05-26 12:47:08.000000000","message":"Wrong parameter name here","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7aced6143df15f647569f04855ad899cafda4868","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    def _delete_share_network(self, share_network):"},{"line_number":131,"context_line":"        \"\"\"Delete share network."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        :param security_service: instance of :class:`ShareNetwork`."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        share_network.delete()"},{"line_number":136,"context_line":"        bench_utils.wait_for_delete("}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_b081cafd","line":133,"in_reply_to":"7a016987_5efe6406","updated":"2015-05-27 17:07:40.000000000","message":"Done","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"0390d3de7acf1622d6f353c50e40f439abf2df93","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def _create_share(self, share_proto, size\u003d1, **kwargs):"},{"line_number":60,"context_line":"        \"\"\"Create a share."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        :param share_proto: str -- share protocol for new share"},{"line_number":63,"context_line":"            available values are NFS, CIFS, GlusterFS and HDFS."},{"line_number":64,"context_line":"        :param size: int -- size of a share in GB"},{"line_number":65,"context_line":"        :param snapshot_id: str -- ID of the snapshot"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_dd56535d","line":62,"updated":"2015-05-29 11:09:14.000000000","message":"Python is a duct-typing language. The `share_proto\u0027 has not to be a string, but simple something that has a `__str__\u0027 method implemented.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"1d39612e4cbe7fb829459da6e503620ffff5156e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def _create_share(self, share_proto, size\u003d1, **kwargs):"},{"line_number":60,"context_line":"        \"\"\"Create a share."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        :param share_proto: str -- share protocol for new share"},{"line_number":63,"context_line":"            available values are NFS, CIFS, GlusterFS and HDFS."},{"line_number":64,"context_line":"        :param size: int -- size of a share in GB"},{"line_number":65,"context_line":"        :param snapshot_id: str -- ID of the snapshot"}],"source_content_type":"text/x-python","patch_set":11,"id":"5afe65bd_bdef93af","line":62,"in_reply_to":"7a016987_dd56535d","updated":"2015-06-02 14:16:24.000000000","message":"Removed.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"0390d3de7acf1622d6f353c50e40f439abf2df93","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :param snapshot_id: str -- ID of the snapshot"},{"line_number":66,"context_line":"        :param name: str -- name of new share"},{"line_number":67,"context_line":"        :param description: str -- description of a share"},{"line_number":68,"context_line":"        :param metadata: dict -- optional metadata to set on share creation"},{"line_number":69,"context_line":"        :param share_network: either instance of ShareNetwork or str with ID"},{"line_number":70,"context_line":"        :param share_type: either instance of ShareType or str with ID"},{"line_number":71,"context_line":"        :param is_public: bool, whether to set share as public or not."}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_ddcd3331","line":68,"updated":"2015-05-29 11:09:14.000000000","message":"Is it not necessary a `dict\u0027 -- it could be an object with __getitem__ implemented.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"1d39612e4cbe7fb829459da6e503620ffff5156e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        :param snapshot_id: str -- ID of the snapshot"},{"line_number":66,"context_line":"        :param name: str -- name of new share"},{"line_number":67,"context_line":"        :param description: str -- description of a share"},{"line_number":68,"context_line":"        :param metadata: dict -- optional metadata to set on share creation"},{"line_number":69,"context_line":"        :param share_network: either instance of ShareNetwork or str with ID"},{"line_number":70,"context_line":"        :param share_type: either instance of ShareType or str with ID"},{"line_number":71,"context_line":"        :param is_public: bool, whether to set share as public or not."}],"source_content_type":"text/x-python","patch_set":11,"id":"5afe65bd_7d30fb56","line":68,"in_reply_to":"7a016987_ddcd3331","updated":"2015-06-02 14:16:24.000000000","message":"Removed.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"0390d3de7acf1622d6f353c50e40f439abf2df93","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                              nova_net_id\u003dNone, name\u003dNone, description\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Create share network."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        :param neutron_net_id: text -- ID of Neutron network"},{"line_number":110,"context_line":"        :param neutron_subnet_id: text -- ID of Neutron subnet"},{"line_number":111,"context_line":"        :param nova_net_id: text -- ID of Nova network"},{"line_number":112,"context_line":"        :param name: text text -- share network name"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_dde413a9","line":109,"updated":"2015-05-29 11:09:14.000000000","message":"How it `text\u0027 different from `str\u0027?\n\nPlease, just omit these.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"1d39612e4cbe7fb829459da6e503620ffff5156e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                              nova_net_id\u003dNone, name\u003dNone, description\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Create share network."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        :param neutron_net_id: text -- ID of Neutron network"},{"line_number":110,"context_line":"        :param neutron_subnet_id: text -- ID of Neutron subnet"},{"line_number":111,"context_line":"        :param nova_net_id: text -- ID of Nova network"},{"line_number":112,"context_line":"        :param name: text text -- share network name"}],"source_content_type":"text/x-python","patch_set":11,"id":"5afe65bd_5d353f44","line":109,"in_reply_to":"7a016987_83499833","updated":"2015-06-02 14:16:24.000000000","message":"Done","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"31d27812a7622fe9c623d017de31acbd8dea98df","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                              nova_net_id\u003dNone, name\u003dNone, description\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Create share network."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        :param neutron_net_id: text -- ID of Neutron network"},{"line_number":110,"context_line":"        :param neutron_subnet_id: text -- ID of Neutron subnet"},{"line_number":111,"context_line":"        :param nova_net_id: text -- ID of Nova network"},{"line_number":112,"context_line":"        :param name: text text -- share network name"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_83499833","line":109,"in_reply_to":"7a016987_c3a6700e","updated":"2015-05-29 11:51:22.000000000","message":"No-no, just remove (most of the) types completely.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"5e584c621e13cc9e4ad26448e32138a1135a6e00","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                              nova_net_id\u003dNone, name\u003dNone, description\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Create share network."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        :param neutron_net_id: text -- ID of Neutron network"},{"line_number":110,"context_line":"        :param neutron_subnet_id: text -- ID of Neutron subnet"},{"line_number":111,"context_line":"        :param nova_net_id: text -- ID of Nova network"},{"line_number":112,"context_line":"        :param name: text text -- share network name"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_c3a6700e","line":109,"in_reply_to":"7a016987_dde413a9","updated":"2015-05-29 11:45:55.000000000","message":"It is left-over after replacing \"text\" to \"str\" as was suggested.\n\nWill fix.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"be8db70177bfc7a1b0cc2af6afb61348f15962ee","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        :returns: instance of :class:`Share`"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":75,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":78,"context_line":"            share_proto, size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3afb71cf_8469f4c0","line":75,"updated":"2015-06-08 09:47:06.000000000","message":"I prefer to disable ability to setup custom names.\n1) Do we need such approach?\n2) For custom names it harder to support cleanup.","commit_id":"ca3d66b82625f56c79bea57e2c5bbb8a75e44d57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e27452d652ad957b8f3e2b3da4bcf45582fa5a02","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        :returns: instance of :class:`Share`"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":75,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":78,"context_line":"            share_proto, size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3afb71cf_c40fecdf","line":75,"in_reply_to":"3afb71cf_8469f4c0","updated":"2015-06-08 09:52:32.000000000","message":"This name is intended to inform user of Rally that it is used by Rally, but not for cleanup. Cleanup operation should use IDs.","commit_id":"ca3d66b82625f56c79bea57e2c5bbb8a75e44d57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"afe649d85d19da15288de797508451129caf4166","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        :returns: instance of :class:`Share`"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":75,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":78,"context_line":"            share_proto, size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3afb71cf_25d11758","line":75,"in_reply_to":"3afb71cf_adca939f","updated":"2015-06-08 12:22:53.000000000","message":"This param is set only when it is not provided by caller. So, your case is false here, because we replace here empty value with some name and not setting it always. Then, name is generated using base rally util. So, even if it is used for cleanup (should not), it should be ok anyway.","commit_id":"ca3d66b82625f56c79bea57e2c5bbb8a75e44d57"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c90b79fd5f9b728d9cad7698c8c2c3792e3c5316","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        :returns: instance of :class:`Share`"},{"line_number":73,"context_line":"        \"\"\""},{"line_number":74,"context_line":"        if not kwargs.get(\"name\"):"},{"line_number":75,"context_line":"            kwargs[\"name\"] \u003d self._generate_random_name()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        share \u003d self.clients(\"manila\").shares.create("},{"line_number":78,"context_line":"            share_proto, size, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3afb71cf_adca939f","line":75,"in_reply_to":"3afb71cf_c40fecdf","updated":"2015-06-08 11:10:52.000000000","message":"Imo, it is bad idea to store all id\u0027s of created resources. Much simpler way is cleanup based on filtering all resources by name pattern.","commit_id":"ca3d66b82625f56c79bea57e2c5bbb8a75e44d57"}],"requirements.txt":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":8,"id":"7a016987_5b9fa750","line":29,"updated":"2015-05-25 21:25:28.000000000","message":"Please either import from a module or remove this requirements completely, leaving it to a test-requirements.txt","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b55b07706a8d0d31229fea3dca45b4eb94e8dbcc","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":8,"id":"7a016987_dcfcaa74","line":29,"in_reply_to":"7a016987_2d726e4a","updated":"2015-05-26 07:06:26.000000000","message":"Any of \"python-*client\" can be called \"optional\" using your idea. There are lots of such cases, not only with python clients.\n\nSo, nothing to change. This is requirement as well as all neibour \"python-*client\"s.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":8,"id":"7a016987_db34b7fc","line":29,"in_reply_to":"7a016987_5b9fa750","updated":"2015-05-25 22:20:25.000000000","message":"I am not sure I get your point here. Manilaclient becomes \"requirement\". It is NOT \"test\"-requirement.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":8,"id":"7a016987_2d726e4a","line":29,"in_reply_to":"7a016987_db34b7fc","updated":"2015-05-25 22:53:12.000000000","message":"You got none of my comment meaning right.\n\nYou either DO require this client from inside of the project-wise code OR you do put in an optional-requirement.\n\ntl;dr: this client is not required until I really call for a manila-scenario.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7444139495a0bedfcfaa2c833473f25f8ccbdaa7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":9,"id":"7a016987_8992679e","line":29,"updated":"2015-05-26 11:49:01.000000000","message":"Still I don\u0027t get why should I install a client that is not required for the operation of Rally w/o Manila scenarios.\n\nBoris, is that the part of `pluginisation\u0027 thing you speak of?","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"0390d3de7acf1622d6f353c50e40f439abf2df93","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":11,"id":"7a016987_fdc10fe5","line":29,"updated":"2015-05-29 11:09:14.000000000","message":"Once again -- please put this into the optional-requirements. All the new code does so.\n\nSee for instance https://review.openstack.org/#/c/178731/22/optional-requirements.txt,cm","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"31d27812a7622fe9c623d017de31acbd8dea98df","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":11,"id":"7a016987_230664ce","line":29,"in_reply_to":"7a016987_e31ccc67","updated":"2015-05-29 11:51:22.000000000","message":"Well, Rally tries to see openstack as only a part of the project. That is why it is named rally.plugins.openstack.","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"5e584c621e13cc9e4ad26448e32138a1135a6e00","unresolved":false,"context_lines":[{"line_number":26,"context_line":"python-novaclient\u003e\u003d2.22.0"},{"line_number":27,"context_line":"python-neutronclient\u003e\u003d2.3.11,\u003c3"},{"line_number":28,"context_line":"python-cinderclient\u003e\u003d1.2.1"},{"line_number":29,"context_line":"python-manilaclient\u003e\u003d1.0.4"},{"line_number":30,"context_line":"python-heatclient\u003e\u003d0.3.0"},{"line_number":31,"context_line":"python-ceilometerclient\u003e\u003d1.0.13"},{"line_number":32,"context_line":"python-ironicclient\u003e\u003d0.2.1"}],"source_content_type":"text/plain","patch_set":11,"id":"7a016987_e31ccc67","line":29,"in_reply_to":"7a016987_fdc10fe5","updated":"2015-05-29 11:45:55.000000000","message":"Reason is not in \"new\" or \"old\". All projects there are just absent in \"requirements\" projects - https://github.com/openstack/requirements/blob/master/global-requirements.txt\n\nmanilaclient is present there.\n\nAnd exactly this reason is the only reason for creation of such \"optional requirements\".","commit_id":"c3914c3b93a49aa715ddba5e4cbb539cd03878f0"}],"tests/unit/plugins/openstack/scenarios/manila/test_utils.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    @mock.patch(BM_UTILS + \"resource_is\")"},{"line_number":40,"context_line":"    def test__create_share(self, resource_is, get_from_manager, wait_for,"},{"line_number":41,"context_line":"                           clients, sleep):"},{"line_number":42,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":43,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":44,"context_line":"        clients(\"manila\").shares.create.return_value \u003d fake_share"},{"line_number":45,"context_line":"        self.scenario.context \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bbe57bdd","line":42,"updated":"2015-05-25 21:25:28.000000000","message":"These rally-never-any-other-project people told me, that it is better to have a copied value rather then storing it in a variable.\n\nThey are wrong, but this is \"how it is done in this project\". In particular, Boris dislikes additional variables more than disliking additional values. We can cure Boris but atm HE IS A BOSS.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    @mock.patch(BM_UTILS + \"resource_is\")"},{"line_number":40,"context_line":"    def test__create_share(self, resource_is, get_from_manager, wait_for,"},{"line_number":41,"context_line":"                           clients, sleep):"},{"line_number":42,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":43,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":44,"context_line":"        clients(\"manila\").shares.create.return_value \u003d fake_share"},{"line_number":45,"context_line":"        self.scenario.context \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_ad9c1e5e","line":42,"in_reply_to":"7a016987_0dfe9205","updated":"2015-05-25 22:53:12.000000000","message":"Well, I will ask Boris to provide you some.\n\nWhen he fails I will provide with comments of him stating this is a kinda requirement.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    @mock.patch(BM_UTILS + \"resource_is\")"},{"line_number":40,"context_line":"    def test__create_share(self, resource_is, get_from_manager, wait_for,"},{"line_number":41,"context_line":"                           clients, sleep):"},{"line_number":42,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":43,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":44,"context_line":"        clients(\"manila\").shares.create.return_value \u003d fake_share"},{"line_number":45,"context_line":"        self.scenario.context \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_0dfe9205","line":42,"in_reply_to":"7a016987_bbe57bdd","updated":"2015-05-25 22:20:25.000000000","message":"So, you propose me to use \"copied value\" instead of using variable? Even being agreed that it is correct and just contradicts someone\u0027s opinion?\n\nFrom testing point of view usage of variable is safer. I need strong argument for opposite view to change it.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                           clients, sleep):"},{"line_number":42,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":43,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":44,"context_line":"        clients(\"manila\").shares.create.return_value \u003d fake_share"},{"line_number":45,"context_line":"        self.scenario.context \u003d {"},{"line_number":46,"context_line":"            \"tenant\": {"},{"line_number":47,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_1bd7efee","line":44,"updated":"2015-05-25 21:25:28.000000000","message":"Please, never introduce a new variable for a result of expression that is going to be used only once.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                           clients, sleep):"},{"line_number":42,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":43,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":44,"context_line":"        clients(\"manila\").shares.create.return_value \u003d fake_share"},{"line_number":45,"context_line":"        self.scenario.context \u003d {"},{"line_number":46,"context_line":"            \"tenant\": {"},{"line_number":47,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_ad0c1e3c","line":44,"in_reply_to":"7a016987_1bd7efee","updated":"2015-05-25 22:20:25.000000000","message":"Line 61 verifies specific values and here we set it. Even if it used once.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                           clients, sleep):"},{"line_number":42,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":43,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":44,"context_line":"        clients(\"manila\").shares.create.return_value \u003d fake_share"},{"line_number":45,"context_line":"        self.scenario.context \u003d {"},{"line_number":46,"context_line":"            \"tenant\": {"},{"line_number":47,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5d543120","line":44,"in_reply_to":"7a016987_4dac8a8c","updated":"2015-05-26 10:23:08.000000000","message":"\"fake_name\" is much shorter than \"mock_clients.return_value.shares.create.return_value\"\n\nI will leave it as is for the moment.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                           clients, sleep):"},{"line_number":42,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":43,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":44,"context_line":"        clients(\"manila\").shares.create.return_value \u003d fake_share"},{"line_number":45,"context_line":"        self.scenario.context \u003d {"},{"line_number":46,"context_line":"            \"tenant\": {"},{"line_number":47,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_4dac8a8c","line":44,"in_reply_to":"7a016987_ad0c1e3c","updated":"2015-05-25 22:53:12.000000000","message":"Use mock_clients.return_value.shares.create.return_value in the line 61 instead.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":68,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":69,"context_line":"    def test__delete_share(self, wait_for_delete, get_from_manager):"},{"line_number":70,"context_line":"        fake_share \u003d type(\"Share\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.scenario._delete_share(fake_share)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_fb29b3f3","line":70,"updated":"2015-05-25 21:25:28.000000000","message":"just use \u0027mock.MagicMock\u0027\n fake_share \u003d mock.MagicMock.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":68,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":69,"context_line":"    def test__delete_share(self, wait_for_delete, get_from_manager):"},{"line_number":70,"context_line":"        fake_share \u003d type(\"Share\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.scenario._delete_share(fake_share)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_edb9f6cc","line":70,"in_reply_to":"7a016987_ad23fea6","updated":"2015-05-25 22:53:12.000000000","message":"Please find me an instance of creating a type *inside* the test case. Then I will rewrite it to a MagicMock.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":68,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":69,"context_line":"    def test__delete_share(self, wait_for_delete, get_from_manager):"},{"line_number":70,"context_line":"        fake_share \u003d type(\"Share\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.scenario._delete_share(fake_share)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_4847cd4b","line":70,"in_reply_to":"7a016987_edb9f6cc","updated":"2015-05-26 10:23:08.000000000","message":"Both works. I do not mind to change it. Done.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":68,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":69,"context_line":"    def test__delete_share(self, wait_for_delete, get_from_manager):"},{"line_number":70,"context_line":"        fake_share \u003d type(\"Share\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.scenario._delete_share(fake_share)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_ad23fea6","line":70,"in_reply_to":"7a016987_fb29b3f3","updated":"2015-05-25 22:20:25.000000000","message":"Why do you think \"MagicMock\" is better? Current approach satisfies the goal.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.scenario._delete_share(fake_share)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        fake_share.delete.assert_called_once_with()"},{"line_number":75,"context_line":"        get_from_manager.assert_called_once_with((\"error_deleting\", ))"},{"line_number":76,"context_line":"        wait_for_delete.assert_called_once_with("},{"line_number":77,"context_line":"            fake_share, update_resource\u003dmock.ANY, timeout\u003d180,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_db2ef7f9","line":74,"updated":"2015-05-25 21:25:28.000000000","message":"so, you can assert on fake_share.delete calls here exact the same way.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.scenario._delete_share(fake_share)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        fake_share.delete.assert_called_once_with()"},{"line_number":75,"context_line":"        get_from_manager.assert_called_once_with((\"error_deleting\", ))"},{"line_number":76,"context_line":"        wait_for_delete.assert_called_once_with("},{"line_number":77,"context_line":"            fake_share, update_resource\u003dmock.ANY, timeout\u003d180,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_e86c39d2","line":74,"in_reply_to":"7a016987_db2ef7f9","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            check_interval\u003d2)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_9b387f3f","line":81,"updated":"2015-05-25 21:25:28.000000000","message":"`mock_clients\u0027 instead of `clients\u0027","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            check_interval\u003d2)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_089f95b5","line":81,"in_reply_to":"7a016987_3c1cdec0","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            check_interval\u003d2)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_cdae3a81","line":81,"in_reply_to":"7a016987_6d3626e9","updated":"2015-05-25 22:53:12.000000000","message":"Guilelines? What is it?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            check_interval\u003d2)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_6d3626e9","line":81,"in_reply_to":"7a016987_9b387f3f","updated":"2015-05-25 22:20:25.000000000","message":"Why? Link to guilelines?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b55b07706a8d0d31229fea3dca45b4eb94e8dbcc","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            check_interval\u003d2)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_3c1cdec0","line":81,"in_reply_to":"7a016987_cdae3a81","updated":"2015-05-26 07:06:26.000000000","message":"Something like this: http://docs.openstack.org/developer/hacking/","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"},{"line_number":85,"context_line":"            \"neutron_net_id\": \"fake_neutron_net_id\","},{"line_number":86,"context_line":"            \"neutron_subnet_id\": \"fake_neutron_subnet_id\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_7b3ee32a","line":83,"updated":"2015-05-25 21:25:28.000000000","message":"Never call the mocked object -- it is supposed to be called from inside the tested subject.\n\nHowever, rally-never-any-other-project can tell you otherwise.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"1df428549dd417fd893794d409d742847a28e022","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"},{"line_number":85,"context_line":"            \"neutron_net_id\": \"fake_neutron_net_id\","},{"line_number":86,"context_line":"            \"neutron_subnet_id\": \"fake_neutron_subnet_id\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_6933abf7","line":83,"in_reply_to":"7a016987_0809d5dd","updated":"2015-05-26 11:41:02.000000000","message":"https://docs.python.org/3/library/unittest.mock-examples.html\n\nhttps://github.com/paboldin/python-samples/blob/master/why-not-call-mock-during-test-setup.py","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"},{"line_number":85,"context_line":"            \"neutron_net_id\": \"fake_neutron_net_id\","},{"line_number":86,"context_line":"            \"neutron_subnet_id\": \"fake_neutron_subnet_id\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_adb3fee8","line":83,"in_reply_to":"7a016987_0d4c5275","updated":"2015-05-25 22:53:12.000000000","message":"Yes. There a lot of troubles inside of the project -- and most of the cores are not able to write a correct python code.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"},{"line_number":85,"context_line":"            \"neutron_net_id\": \"fake_neutron_net_id\","},{"line_number":86,"context_line":"            \"neutron_subnet_id\": \"fake_neutron_subnet_id\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_0d4c5275","line":83,"in_reply_to":"7a016987_7b3ee32a","updated":"2015-05-25 22:20:25.000000000","message":"\"rally-never-any-other-project\"?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":81,"context_line":"    def test__create_share_network(self, clients):"},{"line_number":82,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":83,"context_line":"        clients(\"manila\").share_networks.create.return_value \u003d fake_share"},{"line_number":84,"context_line":"        data \u003d {"},{"line_number":85,"context_line":"            \"neutron_net_id\": \"fake_neutron_net_id\","},{"line_number":86,"context_line":"            \"neutron_subnet_id\": \"fake_neutron_subnet_id\","}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_0809d5dd","line":83,"in_reply_to":"7a016987_adb3fee8","updated":"2015-05-26 10:23:08.000000000","message":"Oh, those amateurs, they always do wrong things \u003d)","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \"description\": \"fake_description\","},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5b3b2739","line":92,"updated":"2015-05-25 21:25:28.000000000","message":"Since `result\u0027 is not used anywhere except for `self.assertEqual\u0027 call just call it inside the syntax of a function call.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"1df428549dd417fd893794d409d742847a28e022","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \"description\": \"fake_description\","},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_694a8b57","line":92,"in_reply_to":"7a016987_3c73be17","updated":"2015-05-26 11:41:02.000000000","message":"Tests are not to be debugged. They are to *test* the code.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b55b07706a8d0d31229fea3dca45b4eb94e8dbcc","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \"description\": \"fake_description\","},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_3c73be17","line":92,"in_reply_to":"7a016987_4dc36a39","updated":"2015-05-26 07:06:26.000000000","message":"I completely don\u0027t agree, sorry. ANY code, if it is used for something in \"changing\" project will be debugged some time. In this particular case - when someone will change Manila\u0027s support somehow.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \"description\": \"fake_description\","},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_6d3d06bb","line":92,"in_reply_to":"7a016987_5b3b2739","updated":"2015-05-25 22:20:25.000000000","message":"Could be so. But when you have some errors and debug code, it is better to have separate code lines for such things.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \"description\": \"fake_description\","},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_4dc36a39","line":92,"in_reply_to":"7a016987_6d3d06bb","updated":"2015-05-25 22:53:12.000000000","message":"Test code is not to be debuged. It is either works or not.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":98,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_1b45afb2","line":95,"updated":"2015-05-25 21:25:28.000000000","message":"Never call the mocked object. Never read any code that does so -- it was written by some one who gets little to no understanding of Python Unit Tests.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5e64551d97c69dd381130a7e0ec3f962cec6500f","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":98,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_cde51add","line":95,"in_reply_to":"7a016987_0d7332b6","updated":"2015-05-25 22:53:12.000000000","message":"I left you a note afterwards.\n\nBut overall -- when you do not call the object from inside the test code you are able to assert of the calls of any complexity against the mocked object.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":98,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_0d7332b6","line":95,"in_reply_to":"7a016987_1b45afb2","updated":"2015-05-25 22:20:25.000000000","message":"Ok, you said that someone who did it first does not understand something. It is not the argument. Say, why? If you think this test will not discover some error and \"mock-not-called\" will do this, then, please, describe how exactly, otherwise I do not see here useful seed.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        result \u003d self.scenario._create_share_network(**data)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.assertEqual(fake_share, result)"},{"line_number":95,"context_line":"        clients(\"manila\").share_networks.create.assert_called_once_with(**data)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":98,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_4816adf2","line":95,"in_reply_to":"7a016987_cde51add","updated":"2015-05-26 10:23:08.000000000","message":"Changed it. But \"clients\" and \"clients.return_value.share_networks.create\" are different objects and only the latter is verified in test. So, nothing is/was broken here.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":98,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":99,"context_line":"    def test__delete_share_network(self, wait_for_delete, get_from_manager):"},{"line_number":100,"context_line":"        fake_sn \u003d type(\"ShareNetwork\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        self.scenario._delete_share_network(fake_sn)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_db15d79b","line":100,"updated":"2015-05-25 21:25:28.000000000","message":"Use a MagicMock, as described above.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":98,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":99,"context_line":"    def test__delete_share_network(self, wait_for_delete, get_from_manager):"},{"line_number":100,"context_line":"        fake_sn \u003d type(\"ShareNetwork\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        self.scenario._delete_share_network(fake_sn)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_a8cd2188","line":100,"in_reply_to":"7a016987_ad71beaa","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":98,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":99,"context_line":"    def test__delete_share_network(self, wait_for_delete, get_from_manager):"},{"line_number":100,"context_line":"        fake_sn \u003d type(\"ShareNetwork\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        self.scenario._delete_share_network(fake_sn)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_ad71beaa","line":100,"in_reply_to":"7a016987_db15d79b","updated":"2015-05-25 22:20:25.000000000","message":"It was not described, it was said just to use it.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        {\"search_opts\": {\"project_id\": \"fake_project\"}},"},{"line_number":114,"context_line":"    )"},{"line_number":115,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":116,"context_line":"    def test__list_share_networks(self, params, clients):"},{"line_number":117,"context_line":"        fake_share_networks \u003d [\"foo\", \"bar\"]"},{"line_number":118,"context_line":"        clients(\"manila\").share_networks.list.return_value \u003d ("},{"line_number":119,"context_line":"            fake_share_networks)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_7b25c308","line":116,"updated":"2015-05-25 21:25:28.000000000","message":"Always call these prefixed with \u0027mock_\u0027.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        {\"search_opts\": {\"project_id\": \"fake_project\"}},"},{"line_number":114,"context_line":"    )"},{"line_number":115,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":116,"context_line":"    def test__list_share_networks(self, params, clients):"},{"line_number":117,"context_line":"        fake_share_networks \u003d [\"foo\", \"bar\"]"},{"line_number":118,"context_line":"        clients(\"manila\").share_networks.list.return_value \u003d ("},{"line_number":119,"context_line":"            fake_share_networks)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_8d6722ea","line":116,"in_reply_to":"7a016987_7b25c308","updated":"2015-05-25 22:20:25.000000000","message":"Why? Links to guidelines?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        {\"search_opts\": {\"project_id\": \"fake_project\"}},"},{"line_number":114,"context_line":"    )"},{"line_number":115,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":116,"context_line":"    def test__list_share_networks(self, params, clients):"},{"line_number":117,"context_line":"        fake_share_networks \u003d [\"foo\", \"bar\"]"},{"line_number":118,"context_line":"        clients(\"manila\").share_networks.list.return_value \u003d ("},{"line_number":119,"context_line":"            fake_share_networks)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_081675a7","line":116,"in_reply_to":"7a016987_8d6722ea","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":116,"context_line":"    def test__list_share_networks(self, params, clients):"},{"line_number":117,"context_line":"        fake_share_networks \u003d [\"foo\", \"bar\"]"},{"line_number":118,"context_line":"        clients(\"manila\").share_networks.list.return_value \u003d ("},{"line_number":119,"context_line":"            fake_share_networks)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        result \u003d self.scenario._list_share_networks(**params)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_9b0f5f88","line":118,"updated":"2015-05-25 21:25:28.000000000","message":"Never call a mocked object from the test.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":116,"context_line":"    def test__list_share_networks(self, params, clients):"},{"line_number":117,"context_line":"        fake_share_networks \u003d [\"foo\", \"bar\"]"},{"line_number":118,"context_line":"        clients(\"manila\").share_networks.list.return_value \u003d ("},{"line_number":119,"context_line":"            fake_share_networks)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        result \u003d self.scenario._list_share_networks(**params)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_883b8538","line":118,"in_reply_to":"7a016987_6d64e6e4","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":116,"context_line":"    def test__list_share_networks(self, params, clients):"},{"line_number":117,"context_line":"        fake_share_networks \u003d [\"foo\", \"bar\"]"},{"line_number":118,"context_line":"        clients(\"manila\").share_networks.list.return_value \u003d ("},{"line_number":119,"context_line":"            fake_share_networks)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        result \u003d self.scenario._list_share_networks(**params)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_6d64e6e4","line":118,"in_reply_to":"7a016987_9b0f5f88","updated":"2015-05-25 22:20:25.000000000","message":"ditto","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        result \u003d self.scenario._list_share_networks(**params)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.assertEqual(fake_share_networks, result)"},{"line_number":124,"context_line":"        clients(\"manila\").share_networks.list.assert_called_once_with("},{"line_number":125,"context_line":"            detailed\u003dparams.get(\"detailed\", True),"},{"line_number":126,"context_line":"            search_opts\u003dparams.get(\"search_opts\", None))"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5b220703","line":124,"updated":"2015-05-25 21:25:28.000000000","message":"Never assert like this.\n\nUse\n clients.return_value.share_networks.list\n\ninstead.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        result \u003d self.scenario._list_share_networks(**params)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.assertEqual(fake_share_networks, result)"},{"line_number":124,"context_line":"        clients(\"manila\").share_networks.list.assert_called_once_with("},{"line_number":125,"context_line":"            detailed\u003dparams.get(\"detailed\", True),"},{"line_number":126,"context_line":"            search_opts\u003dparams.get(\"search_opts\", None))"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_e8331961","line":124,"in_reply_to":"7a016987_5b220703","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @ddt.data(\"ldap\", \"kerberos\", \"active_directory\")"},{"line_number":146,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":147,"context_line":"    def test__create_security_service(self, ss_type, clients):"},{"line_number":148,"context_line":"        fake_ss \u003d mock.Mock()"},{"line_number":149,"context_line":"        clients(\"manila\").security_services.create.return_value \u003d fake_ss"},{"line_number":150,"context_line":"        data \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_fb777306","line":147,"updated":"2015-05-25 21:25:28.000000000","message":"mock_clients","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @ddt.data(\"ldap\", \"kerberos\", \"active_directory\")"},{"line_number":146,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":147,"context_line":"    def test__create_security_service(self, ss_type, clients):"},{"line_number":148,"context_line":"        fake_ss \u003d mock.Mock()"},{"line_number":149,"context_line":"        clients(\"manila\").security_services.create.return_value \u003d fake_ss"},{"line_number":150,"context_line":"        data \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_282a51e8","line":147,"in_reply_to":"7a016987_fb777306","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":168,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":169,"context_line":"    def test__delete_security_service(self, wait_for_delete, get_from_manager):"},{"line_number":170,"context_line":"        fake_ss \u003d type(\"SecurityService\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.scenario._delete_security_service(fake_ss)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bb81fbc5","line":169,"updated":"2015-05-25 21:25:28.000000000","message":"mock_wait_for_delete, mock_get_from_manager","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":168,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":169,"context_line":"    def test__delete_security_service(self, wait_for_delete, get_from_manager):"},{"line_number":170,"context_line":"        fake_ss \u003d type(\"SecurityService\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.scenario._delete_security_service(fake_ss)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_68f16995","line":169,"in_reply_to":"7a016987_bb81fbc5","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":168,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":169,"context_line":"    def test__delete_security_service(self, wait_for_delete, get_from_manager):"},{"line_number":170,"context_line":"        fake_ss \u003d type(\"SecurityService\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.scenario._delete_security_service(fake_ss)"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_9b863fda","line":170,"updated":"2015-05-25 21:25:28.000000000","message":"use MagicMock","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    @mock.patch(BM_UTILS + \"get_from_manager\")"},{"line_number":168,"context_line":"    @mock.patch(BM_UTILS + \"wait_for_delete\")"},{"line_number":169,"context_line":"    def test__delete_security_service(self, wait_for_delete, get_from_manager):"},{"line_number":170,"context_line":"        fake_ss \u003d type(\"SecurityService\", (object, ), {\"delete\": mock.Mock()})"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.scenario._delete_security_service(fake_ss)"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_88f4a587","line":170,"in_reply_to":"7a016987_9b863fda","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            fake_ss, update_resource\u003dmock.ANY, timeout\u003d180, check_interval\u003d2)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":180,"context_line":"    def test__add_security_service_to_share_network(self, clients):"},{"line_number":181,"context_line":"        fake_sn \u003d mock.Mock()"},{"line_number":182,"context_line":"        fake_ss \u003d mock.Mock()"},{"line_number":183,"context_line":"        clients(\"manila\").share_networks.add_security_service.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5b69e724","line":180,"updated":"2015-05-25 21:25:28.000000000","message":"mock_clients","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            fake_ss, update_resource\u003dmock.ANY, timeout\u003d180, check_interval\u003d2)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    @mock.patch(MANILA_UTILS + \"clients\")"},{"line_number":180,"context_line":"    def test__add_security_service_to_share_network(self, clients):"},{"line_number":181,"context_line":"        fake_sn \u003d mock.Mock()"},{"line_number":182,"context_line":"        fake_ss \u003d mock.Mock()"},{"line_number":183,"context_line":"        clients(\"manila\").share_networks.add_security_service.return_value \u003d ("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_a8f7618b","line":180,"in_reply_to":"7a016987_5b69e724","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    def test__add_security_service_to_share_network(self, clients):"},{"line_number":181,"context_line":"        fake_sn \u003d mock.Mock()"},{"line_number":182,"context_line":"        fake_ss \u003d mock.Mock()"},{"line_number":183,"context_line":"        clients(\"manila\").share_networks.add_security_service.return_value \u003d ("},{"line_number":184,"context_line":"            fake_sn)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        result \u003d self.scenario._add_security_service_to_share_network("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_1b736f17","line":183,"updated":"2015-05-25 21:25:28.000000000","message":"mock_clients.return_value","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    def test__add_security_service_to_share_network(self, clients):"},{"line_number":181,"context_line":"        fake_sn \u003d mock.Mock()"},{"line_number":182,"context_line":"        fake_ss \u003d mock.Mock()"},{"line_number":183,"context_line":"        clients(\"manila\").share_networks.add_security_service.return_value \u003d ("},{"line_number":184,"context_line":"            fake_sn)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        result \u003d self.scenario._add_security_service_to_share_network("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_c8017d6c","line":183,"in_reply_to":"7a016987_1b736f17","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            share_network\u003dfake_sn, security_service\u003dfake_ss)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        self.assertEqual(fake_sn, result)"},{"line_number":190,"context_line":"        clients(\"manila\").share_networks.add_security_service.assert_has_calls("},{"line_number":191,"context_line":"            [mock.call(fake_sn, fake_ss)])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_bb58db8b","line":190,"updated":"2015-05-25 21:25:28.000000000","message":"Now it seems like you got the reason why one should not call mocked objects inside the test.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"cecb04a1328b1c2645d492a734c6237cbb94cdab","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            share_network\u003dfake_sn, security_service\u003dfake_ss)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        self.assertEqual(fake_sn, result)"},{"line_number":190,"context_line":"        clients(\"manila\").share_networks.add_security_service.assert_has_calls("},{"line_number":191,"context_line":"            [mock.call(fake_sn, fake_ss)])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_cda3daff","line":190,"in_reply_to":"7a016987_bb58db8b","updated":"2015-05-25 22:20:25.000000000","message":"And what is the reason?","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"1df428549dd417fd893794d409d742847a28e022","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            share_network\u003dfake_sn, security_service\u003dfake_ss)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        self.assertEqual(fake_sn, result)"},{"line_number":190,"context_line":"        clients(\"manila\").share_networks.add_security_service.assert_has_calls("},{"line_number":191,"context_line":"            [mock.call(fake_sn, fake_ss)])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_a96763e9","line":190,"in_reply_to":"7a016987_cda3daff","updated":"2015-05-26 11:41:02.000000000","message":"Just once again: https://github.com/paboldin/python-samples/blob/master/why-not-call-mock-during-test-setup.py","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7444139495a0bedfcfaa2c833473f25f8ccbdaa7","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        mock_wait_for_delete.assert_called_once_with("},{"line_number":109,"context_line":"            fake_sn, update_resource\u003dmock.ANY, timeout\u003d180, check_interval\u003d2)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    @ddt.data("},{"line_number":112,"context_line":"        {\"detailed\": True, \"search_opts\": {\"name\": \"foo_sn\"}},"},{"line_number":113,"context_line":"        {\"detailed\": False, \"search_opts\": None},"},{"line_number":114,"context_line":"        {},"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a016987_696bab86","line":111,"updated":"2015-05-26 11:49:01.000000000","message":"I don\u0027t like these implicit multiple runs of the same test with different params -- it is not how it is done in Rally at the moment. But I think this ddt.data is a good thing.\n\nAt the moment, test name is a thing of test_(what)_(conditions). So, I think it is preferable to introduce a test__list_share_networks_detailed, test__list_share_networks and so on.","commit_id":"a4e248d85c9ed5941fd7dfd1797868ee106c9b17"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"611dcb26e6b828a63a00355e163e5929a9f37341","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    @mock.patch(BM_UTILS + \"resource_is\")"},{"line_number":36,"context_line":"    def test__create_share(self, mock_resource_is, mock_get_from_manager,"},{"line_number":37,"context_line":"                           mock_wait_for, mock_clients, mock_sleep):"},{"line_number":38,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":39,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":40,"context_line":"        mock_clients.return_value.shares.create.return_value \u003d fake_share"},{"line_number":41,"context_line":"        self.scenario._generate_random_name \u003d mock.Mock(return_value\u003dfake_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5afe65bd_59ec1cc7","line":38,"updated":"2015-06-02 19:53:45.000000000","message":"Please just use `\"fake_name\"\u0027 everywhere w/o introducing a variable.","commit_id":"89ed6edb77f853cca55ea37ce43da6e58402b1f0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2cf01d9399349f14db0d35858682582b0b785201","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    @mock.patch(BM_UTILS + \"resource_is\")"},{"line_number":36,"context_line":"    def test__create_share(self, mock_resource_is, mock_get_from_manager,"},{"line_number":37,"context_line":"                           mock_wait_for, mock_clients, mock_sleep):"},{"line_number":38,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":39,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":40,"context_line":"        mock_clients.return_value.shares.create.return_value \u003d fake_share"},{"line_number":41,"context_line":"        self.scenario._generate_random_name \u003d mock.Mock(return_value\u003dfake_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5afe65bd_7ee8c7e2","line":38,"in_reply_to":"5afe65bd_59ec1cc7","updated":"2015-06-03 08:49:22.000000000","message":"Why? I would prefer to leave it as is.","commit_id":"89ed6edb77f853cca55ea37ce43da6e58402b1f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"611dcb26e6b828a63a00355e163e5929a9f37341","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        fake_name \u003d \"fake_name\""},{"line_number":39,"context_line":"        fake_share \u003d mock.Mock()"},{"line_number":40,"context_line":"        mock_clients.return_value.shares.create.return_value \u003d fake_share"},{"line_number":41,"context_line":"        self.scenario._generate_random_name \u003d mock.Mock(return_value\u003dfake_name)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        self.scenario._create_share(\"nfs\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5afe65bd_f9dbc819","line":41,"updated":"2015-06-02 19:53:45.000000000","message":"\"fake_name\"","commit_id":"89ed6edb77f853cca55ea37ce43da6e58402b1f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"611dcb26e6b828a63a00355e163e5929a9f37341","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.scenario._create_share(\"nfs\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        mock_clients.return_value.shares.create.assert_called_once_with("},{"line_number":46,"context_line":"            \"nfs\", 1, name\u003dfake_name)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        mock_wait_for.assert_called_once_with("},{"line_number":49,"context_line":"            fake_share, is_ready\u003dmock.ANY, update_resource\u003dmock.ANY,"}],"source_content_type":"text/x-python","patch_set":12,"id":"5afe65bd_99097498","line":46,"updated":"2015-06-02 19:53:45.000000000","message":"\"fake_name\"","commit_id":"89ed6edb77f853cca55ea37ce43da6e58402b1f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"611dcb26e6b828a63a00355e163e5929a9f37341","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        mock_clients.return_value.shares.create.assert_called_once_with("},{"line_number":46,"context_line":"            \"nfs\", 1, name\u003dfake_name)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        mock_wait_for.assert_called_once_with("},{"line_number":49,"context_line":"            fake_share, is_ready\u003dmock.ANY, update_resource\u003dmock.ANY,"},{"line_number":50,"context_line":"            timeout\u003d300, check_interval\u003d3)"},{"line_number":51,"context_line":"        mock_resource_is.assert_called_once_with(\"available\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"5afe65bd_79d118cd","line":48,"updated":"2015-06-02 19:53:45.000000000","message":"Please take a look at e.g. tests/unit/plugins/openstack/scenarios/cinder/test_utils.py to see how to use the `wait_for\u0027 and other fixtures.\n\nThough I\u0027m not sure if it should be done that way here.","commit_id":"89ed6edb77f853cca55ea37ce43da6e58402b1f0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2cf01d9399349f14db0d35858682582b0b785201","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        mock_clients.return_value.shares.create.assert_called_once_with("},{"line_number":46,"context_line":"            \"nfs\", 1, name\u003dfake_name)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        mock_wait_for.assert_called_once_with("},{"line_number":49,"context_line":"            fake_share, is_ready\u003dmock.ANY, update_resource\u003dmock.ANY,"},{"line_number":50,"context_line":"            timeout\u003d300, check_interval\u003d3)"},{"line_number":51,"context_line":"        mock_resource_is.assert_called_once_with(\"available\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"5afe65bd_9ecdc3b9","line":48,"in_reply_to":"5afe65bd_79d118cd","updated":"2015-06-03 08:49:22.000000000","message":"I do not see any reason to do it in the same way. Current one solves the goals.","commit_id":"89ed6edb77f853cca55ea37ce43da6e58402b1f0"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"611dcb26e6b828a63a00355e163e5929a9f37341","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        fake_share.delete.assert_called_once_with()"},{"line_number":63,"context_line":"        mock_get_from_manager.assert_called_once_with((\"error_deleting\", ))"},{"line_number":64,"context_line":"        mock_wait_for_delete.assert_called_once_with("},{"line_number":65,"context_line":"            fake_share, update_resource\u003dmock.ANY, timeout\u003d180,"},{"line_number":66,"context_line":"            check_interval\u003d2)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5afe65bd_39dcc0e3","line":64,"updated":"2015-06-02 19:53:45.000000000","message":"Same here.","commit_id":"89ed6edb77f853cca55ea37ce43da6e58402b1f0"}],"tests/unit/test_osclients.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            self.assertEqual(fake_cinder, self.clients.cache[\"cinder\"])"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_manila(self):"},{"line_number":248,"context_line":"        fake_manila \u003d mock.MagicMock(client\u003dmock.Mock())"},{"line_number":249,"context_line":"        mock_manila \u003d mock.MagicMock()"},{"line_number":250,"context_line":"        mock_manila.client.Client.return_value \u003d fake_manila"},{"line_number":251,"context_line":"        self.assertNotIn(\"manila\", self.clients.cache)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_5b50c75e","line":248,"updated":"2015-05-25 21:25:28.000000000","message":"No reason for client\u003dmock.Mock()\n\nLearn about MagicMock\u0027s please.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            self.assertEqual(fake_cinder, self.clients.cache[\"cinder\"])"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_manila(self):"},{"line_number":248,"context_line":"        fake_manila \u003d mock.MagicMock(client\u003dmock.Mock())"},{"line_number":249,"context_line":"        mock_manila \u003d mock.MagicMock()"},{"line_number":250,"context_line":"        mock_manila.client.Client.return_value \u003d fake_manila"},{"line_number":251,"context_line":"        self.assertNotIn(\"manila\", self.clients.cache)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_da7027df","line":248,"in_reply_to":"7a016987_5b50c75e","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"5b1bc7b2a36fd61d2901c8fec8c1b1ffe1c0104d","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_manila(self):"},{"line_number":248,"context_line":"        fake_manila \u003d mock.MagicMock(client\u003dmock.Mock())"},{"line_number":249,"context_line":"        mock_manila \u003d mock.MagicMock()"},{"line_number":250,"context_line":"        mock_manila.client.Client.return_value \u003d fake_manila"},{"line_number":251,"context_line":"        self.assertNotIn(\"manila\", self.clients.cache)"},{"line_number":252,"context_line":"        with mock.patch.dict(\"sys.modules\", {\"manilaclient\": mock_manila}):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_fbc5330a","line":249,"updated":"2015-05-25 21:25:28.000000000","message":"One can do it in a single line but the project preferences say otherwise.","commit_id":"67b20769664efb15476b237a560a7370094c178b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"507e1a2279f012dd7d84807936e17977340e01df","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_manila(self):"},{"line_number":248,"context_line":"        fake_manila \u003d mock.MagicMock(client\u003dmock.Mock())"},{"line_number":249,"context_line":"        mock_manila \u003d mock.MagicMock()"},{"line_number":250,"context_line":"        mock_manila.client.Client.return_value \u003d fake_manila"},{"line_number":251,"context_line":"        self.assertNotIn(\"manila\", self.clients.cache)"},{"line_number":252,"context_line":"        with mock.patch.dict(\"sys.modules\", {\"manilaclient\": mock_manila}):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_9a73cfe7","line":249,"in_reply_to":"7a016987_fbc5330a","updated":"2015-05-26 10:23:08.000000000","message":"Done","commit_id":"67b20769664efb15476b237a560a7370094c178b"}]}
