)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add context for Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add context that will allow us to do following things:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- Create shares w/o share networks (+ security services)"},{"line_number":12,"context_line":"- Autocreate share networks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7a016987_40fdd6af","line":9,"updated":"2015-05-29 11:41:18.000000000","message":"Add context for the following things:\n\n(Try not to use \u0027we\u0027 or \u0027us\u0027 in the commit messages)","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add context for Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add context that will allow us to do following things:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- Create shares w/o share networks (+ security services)"},{"line_number":12,"context_line":"- Autocreate share networks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5afe65bd_ab76243c","line":9,"in_reply_to":"7a016987_0905c90f","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add context for Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add context that will allow us to do following things:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- Create shares w/o share networks (+ security services)"},{"line_number":12,"context_line":"- Autocreate share networks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7a016987_0905c90f","line":9,"in_reply_to":"7a016987_40fdd6af","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"}],"rally-jobs/rally-manila-no-ss.yaml":[{"author":{"_account_id":8840,"name":"Carlos L. Torres","email":"carlos.torres@rackspace.com","username":"carl6796"},"change_message_id":"1bca345c5168af877f157659ca489719308c1a14","unresolved":false,"context_lines":[{"line_number":14,"context_line":"            shares: -1"},{"line_number":15,"context_line":"            gigabytes: -1"},{"line_number":16,"context_line":"            snapshots: -1"},{"line_number":17,"context_line":"            snapshot_gigabytes: -1"},{"line_number":18,"context_line":"            share_networks: -1"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  ManilaShares.list_shares:"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"ba3cc151_d6d3bd36","line":17,"updated":"2015-07-08 16:30:47.000000000","message":"gigabytes granularity seems too coarse.\n\nIs this how it is exposed by Manila? If not could this be megabytes instead?","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8840,"name":"Carlos L. Torres","email":"carlos.torres@rackspace.com","username":"carl6796"},"change_message_id":"2453524a206fdd9da0888a9d6877e527183c5da5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"            shares: -1"},{"line_number":15,"context_line":"            gigabytes: -1"},{"line_number":16,"context_line":"            snapshots: -1"},{"line_number":17,"context_line":"            snapshot_gigabytes: -1"},{"line_number":18,"context_line":"            share_networks: -1"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  ManilaShares.list_shares:"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"ba3cc151_8d70bb41","line":17,"in_reply_to":"ba3cc151_92be96ac","updated":"2015-07-08 20:47:44.000000000","message":"Ah ok","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2d5b9439b6f08e49b631e9ebc4e518f44abd08c8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"            shares: -1"},{"line_number":15,"context_line":"            gigabytes: -1"},{"line_number":16,"context_line":"            snapshots: -1"},{"line_number":17,"context_line":"            snapshot_gigabytes: -1"},{"line_number":18,"context_line":"            share_networks: -1"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"  ManilaShares.list_shares:"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"ba3cc151_92be96ac","line":17,"in_reply_to":"ba3cc151_d6d3bd36","updated":"2015-07-08 20:24:35.000000000","message":"It is names of quotas from Manila project. Identical names.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8840,"name":"Carlos L. Torres","email":"carlos.torres@rackspace.com","username":"carl6796"},"change_message_id":"1bca345c5168af877f157659ca489719308c1a14","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        quotas:"},{"line_number":51,"context_line":"          manila:"},{"line_number":52,"context_line":"            shares: -1"},{"line_number":53,"context_line":"            gigabytes: -1"},{"line_number":54,"context_line":"        users:"},{"line_number":55,"context_line":"          tenants: 2"},{"line_number":56,"context_line":"          users_per_tenant: 1"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"ba3cc151_56e80de2","line":53,"updated":"2015-07-08 16:30:47.000000000","message":"same as comment above","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"}],"rally-jobs/rally-manila.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"0a6134a777341e9cb0c80ceb4ae062183dc0ec0f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"          tenants: 1"},{"line_number":31,"context_line":"          users_per_tenant: 1"},{"line_number":32,"context_line":"        manila:"},{"line_number":33,"context_line":"          use_share_networks: False"},{"line_number":34,"context_line":"      sla:"},{"line_number":35,"context_line":"        failure_rate:"},{"line_number":36,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":32,"id":"1a4dcd0f_78ba0fe3","line":33,"updated":"2015-08-11 11:14:04.000000000","message":"If use_share_networks is False, then this context does nothing (and this configuration is not changed in following patches), so just remove manila context here at all","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"05ad9822bf98df93d04a72b84b0f684a937ece58","unresolved":false,"context_lines":[{"line_number":30,"context_line":"          tenants: 1"},{"line_number":31,"context_line":"          users_per_tenant: 1"},{"line_number":32,"context_line":"        manila:"},{"line_number":33,"context_line":"          use_share_networks: False"},{"line_number":34,"context_line":"      sla:"},{"line_number":35,"context_line":"        failure_rate:"},{"line_number":36,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":32,"id":"1a4dcd0f_0885b8ab","line":33,"in_reply_to":"1a4dcd0f_78ba0fe3","updated":"2015-08-11 12:43:34.000000000","message":"Done","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"0a6134a777341e9cb0c80ceb4ae062183dc0ec0f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"          tenants: 2"},{"line_number":52,"context_line":"          users_per_tenant: 1"},{"line_number":53,"context_line":"        manila:"},{"line_number":54,"context_line":"          use_share_networks: False"},{"line_number":55,"context_line":"      sla:"},{"line_number":56,"context_line":"        failure_rate:"},{"line_number":57,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":32,"id":"1a4dcd0f_b8c89775","line":54,"updated":"2015-08-11 11:14:04.000000000","message":"Same here and somewhere below - False causes context to do nothing","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"05ad9822bf98df93d04a72b84b0f684a937ece58","unresolved":false,"context_lines":[{"line_number":51,"context_line":"          tenants: 2"},{"line_number":52,"context_line":"          users_per_tenant: 1"},{"line_number":53,"context_line":"        manila:"},{"line_number":54,"context_line":"          use_share_networks: False"},{"line_number":55,"context_line":"      sla:"},{"line_number":56,"context_line":"        failure_rate:"},{"line_number":57,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":32,"id":"1a4dcd0f_48a2e04c","line":54,"in_reply_to":"1a4dcd0f_b8c89775","updated":"2015-08-11 12:43:34.000000000","message":"Done","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"}],"rally/plugins/openstack/context/manila.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b380b366efdb5c6ab6fad6b0cccb98504a8179d3","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    @utils.log_task_wrapper(LOG.info, _(\"Enter context: `manila`\"))"},{"line_number":193,"context_line":"    def setup(self):"},{"line_number":194,"context_line":"        if not self.config[\"use_share_networks\"]:"},{"line_number":195,"context_line":"            return"},{"line_number":196,"context_line":"        elif self.context[\"config\"].get(\"existing_users\"):"},{"line_number":197,"context_line":"            self._setup_for_existing_users()"},{"line_number":198,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_bbb21b05","line":195,"updated":"2015-05-25 21:28:36.000000000","message":"I think its not good to return None. Try to throw exeption.","commit_id":"54f7fb4a67b310507c65c7c613e157974ac20bf3"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24ee71a1c4bdd7a6a3f003bbcb50bea6d39cdf2e","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    @utils.log_task_wrapper(LOG.info, _(\"Enter context: `manila`\"))"},{"line_number":193,"context_line":"    def setup(self):"},{"line_number":194,"context_line":"        if not self.config[\"use_share_networks\"]:"},{"line_number":195,"context_line":"            return"},{"line_number":196,"context_line":"        elif self.context[\"config\"].get(\"existing_users\"):"},{"line_number":197,"context_line":"            self._setup_for_existing_users()"},{"line_number":198,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_8d71627a","line":195,"in_reply_to":"7a016987_bbb21b05","updated":"2015-05-25 22:24:20.000000000","message":"It is one of correct use cases. \"raise\" of \"exception\" is NOT expected here.","commit_id":"54f7fb4a67b310507c65c7c613e157974ac20bf3"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b380b366efdb5c6ab6fad6b0cccb98504a8179d3","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        if not self.context.get(\"manila_delete_share_networks\", True):"},{"line_number":204,"context_line":"            # NOTE(vponomaryov): assume that share networks were not created"},{"line_number":205,"context_line":"            # by test run"},{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":208,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":209,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_7bcdc385","line":206,"updated":"2015-05-25 21:28:36.000000000","message":"The same here","commit_id":"54f7fb4a67b310507c65c7c613e157974ac20bf3"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24ee71a1c4bdd7a6a3f003bbcb50bea6d39cdf2e","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        if not self.context.get(\"manila_delete_share_networks\", True):"},{"line_number":204,"context_line":"            # NOTE(vponomaryov): assume that share networks were not created"},{"line_number":205,"context_line":"            # by test run"},{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":208,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":209,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_4d6b6a86","line":206,"in_reply_to":"7a016987_7bcdc385","updated":"2015-05-25 22:24:20.000000000","message":"ditto","commit_id":"54f7fb4a67b310507c65c7c613e157974ac20bf3"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"b380b366efdb5c6ab6fad6b0cccb98504a8179d3","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            # NOTE(vponomaryov): assume that share networks were not created"},{"line_number":205,"context_line":"            # by test run"},{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":208,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":209,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":210,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_1b724f4a","line":207,"updated":"2015-05-25 21:28:36.000000000","message":"I think we can do code for delete below in https://github.com/openstack/rally/blob/master/rally/plugins/openstack/context/cleanup/resources.py","commit_id":"54f7fb4a67b310507c65c7c613e157974ac20bf3"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24ee71a1c4bdd7a6a3f003bbcb50bea6d39cdf2e","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            # NOTE(vponomaryov): assume that share networks were not created"},{"line_number":205,"context_line":"            # by test run"},{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":208,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":209,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":210,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_0d0452c4","line":207,"in_reply_to":"7a016987_1b724f4a","updated":"2015-05-25 22:24:20.000000000","message":"Why there? And why not here? While we have \"cleanup\" method here by design till we can use it, right?","commit_id":"54f7fb4a67b310507c65c7c613e157974ac20bf3"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        \"security_services\": [],"},{"line_number":88,"context_line":"    }"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _setup_for_existing_users(self):"},{"line_number":91,"context_line":"        if (self.config[\"use_share_networks\"] and"},{"line_number":92,"context_line":"                not self.config[\"share_networks\"]):"},{"line_number":93,"context_line":"            msg \u003d _(\"Usage of share networks was enabled but for deployment \""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e0d96257","line":90,"updated":"2015-05-29 11:41:18.000000000","message":"Once again, your patch is too big to be reviewed in one step.\n\nPlease split it up with `_setup_for_autocreated_users\u0027 being the only option in the first part and the second part introducing `_setup_for_existing_users\u0027.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        \"security_services\": [],"},{"line_number":88,"context_line":"    }"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _setup_for_existing_users(self):"},{"line_number":91,"context_line":"        if (self.config[\"use_share_networks\"] and"},{"line_number":92,"context_line":"                not self.config[\"share_networks\"]):"},{"line_number":93,"context_line":"            msg \u003d _(\"Usage of share networks was enabled but for deployment \""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ae7d9b1d","line":90,"in_reply_to":"7a016987_e0d96257","updated":"2015-05-29 12:36:10.000000000","message":"Will try.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        for tenant_name_or_id, share_networks in self.config["},{"line_number":99,"context_line":"                \"share_networks\"].items():"},{"line_number":100,"context_line":"            # Verify project existence"},{"line_number":101,"context_line":"            for tenant in self.context[\"tenants\"].values():"},{"line_number":102,"context_line":"                if tenant_name_or_id in (tenant[\"id\"], tenant[\"name\"]):"},{"line_number":103,"context_line":"                    tenant_id \u003d tenant[\"id\"]"},{"line_number":104,"context_line":"                    endpoint \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_20bbfae6","line":101,"updated":"2015-05-29 11:41:18.000000000","message":"This seems to be rather common check.\n\nPlease move it to new utility function.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        for tenant_name_or_id, share_networks in self.config["},{"line_number":99,"context_line":"                \"share_networks\"].items():"},{"line_number":100,"context_line":"            # Verify project existence"},{"line_number":101,"context_line":"            for tenant in self.context[\"tenants\"].values():"},{"line_number":102,"context_line":"                if tenant_name_or_id in (tenant[\"id\"], tenant[\"name\"]):"},{"line_number":103,"context_line":"                    tenant_id \u003d tenant[\"id\"]"},{"line_number":104,"context_line":"                    endpoint \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_49174145","line":101,"in_reply_to":"7a016987_20bbfae6","updated":"2015-05-29 12:36:10.000000000","message":"Since we take some data here and not only perform \"check\" I prefer to leave it as is.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"39d5cf60d8314650cc7e0c1d20e8b62f7869e21d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        for tenant_name_or_id, share_networks in self.config["},{"line_number":99,"context_line":"                \"share_networks\"].items():"},{"line_number":100,"context_line":"            # Verify project existence"},{"line_number":101,"context_line":"            for tenant in self.context[\"tenants\"].values():"},{"line_number":102,"context_line":"                if tenant_name_or_id in (tenant[\"id\"], tenant[\"name\"]):"},{"line_number":103,"context_line":"                    tenant_id \u003d tenant[\"id\"]"},{"line_number":104,"context_line":"                    endpoint \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e9e4ada8","line":101,"in_reply_to":"7a016987_49174145","updated":"2015-05-29 13:09:39.000000000","message":"You can name that function:\n find_tenant_and_user(tenant_name_or_id)","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            self.context[\"tenants\"][tenant_id][\"share_networks\"] \u003d []"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"            clients \u003d osclients.Clients(endpoint)"},{"line_number":118,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":119,"context_line":"            existing_sns \u003d manila._list_share_networks("},{"line_number":120,"context_line":"                detailed\u003dFalse, search_opts\u003d{\"project_id\": tenant_id})"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e0b042ff","line":118,"updated":"2015-05-29 11:41:18.000000000","message":"Please, use `manila_scenario\u0027 name instead. Please avoid using `manila\u0027 or any other  common name for a variable.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            self.context[\"tenants\"][tenant_id][\"share_networks\"] \u003d []"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"            clients \u003d osclients.Clients(endpoint)"},{"line_number":118,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":119,"context_line":"            existing_sns \u003d manila._list_share_networks("},{"line_number":120,"context_line":"                detailed\u003dFalse, search_opts\u003d{\"project_id\": tenant_id})"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_2e9c0bbf","line":118,"in_reply_to":"7a016987_e0b042ff","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"            clients \u003d osclients.Clients(endpoint)"},{"line_number":118,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":119,"context_line":"            existing_sns \u003d manila._list_share_networks("},{"line_number":120,"context_line":"                detailed\u003dFalse, search_opts\u003d{\"project_id\": tenant_id})"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"            for sn_name_or_id in share_networks:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_60c5725a","line":119,"updated":"2015-05-29 11:41:18.000000000","message":"Please name `existing_share_networks\u0027.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"            clients \u003d osclients.Clients(endpoint)"},{"line_number":118,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":119,"context_line":"            existing_sns \u003d manila._list_share_networks("},{"line_number":120,"context_line":"                detailed\u003dFalse, search_opts\u003d{\"project_id\": tenant_id})"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"            for sn_name_or_id in share_networks:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ae691bc0","line":119,"in_reply_to":"7a016987_60c5725a","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"            clients \u003d osclients.Clients(endpoint)"},{"line_number":118,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":119,"context_line":"            existing_sns \u003d manila._list_share_networks("},{"line_number":120,"context_line":"                detailed\u003dFalse, search_opts\u003d{\"project_id\": tenant_id})"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"            for sn_name_or_id in share_networks:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_4b09f094","line":119,"in_reply_to":"7a016987_ae691bc0","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    self.context[\"tenants\"][tenant_id][\"share_networks\"]))"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Set flag that says we will not delete/cleanup share networks"},{"line_number":144,"context_line":"        self.context[\"manila_delete_share_networks\"] \u003d False"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _setup_for_autocreated_users(self):"},{"line_number":147,"context_line":"        # Create share network for each network of tenant"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_c09ae661","line":144,"updated":"2015-05-29 11:41:18.000000000","message":"This code can potentially delete manila share_network for a user.\n\nImagine there is multiple `share_networks\u0027 and first of them is OK so it gets appended to the `self.context[\"tenants\"][tenant_id][\"share_networks\"]\u0027.  But one of the following is bad and the \u0027ContextSetupFailure\u0027 is raised by L131-L132.\n\nThis will leave self.context[\"manila_delete_share_networks\"] undefined and the `cleanup\u0027 method will delete the user\u0027s share networks from the tenant\u0027s `share_networks\u0027 list.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    self.context[\"tenants\"][tenant_id][\"share_networks\"]))"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Set flag that says we will not delete/cleanup share networks"},{"line_number":144,"context_line":"        self.context[\"manila_delete_share_networks\"] \u003d False"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _setup_for_autocreated_users(self):"},{"line_number":147,"context_line":"        # Create share network for each network of tenant"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_4b17b0a3","line":144,"in_reply_to":"7a016987_43be00af","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    self.context[\"tenants\"][tenant_id][\"share_networks\"]))"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Set flag that says we will not delete/cleanup share networks"},{"line_number":144,"context_line":"        self.context[\"manila_delete_share_networks\"] \u003d False"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def _setup_for_autocreated_users(self):"},{"line_number":147,"context_line":"        # Create share network for each network of tenant"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_43be00af","line":144,"in_reply_to":"7a016987_c09ae661","updated":"2015-05-29 12:36:10.000000000","message":"Good catch! Will fix it.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":150,"context_line":"            networks \u003d self.context[\"tenants\"][tenant_id].get(\"networks\")"},{"line_number":151,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":152,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":153,"context_line":"            self.context[\"tenants\"][tenant_id][\"share_networks\"] \u003d []"},{"line_number":154,"context_line":"            self.context[\"tenants\"][tenant_id][\"security_services\"] \u003d []"},{"line_number":155,"context_line":"            data \u003d {\"name\": manila._generate_random_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_60aa1273","line":152,"updated":"2015-05-29 11:41:18.000000000","message":"Please use `manila_scenario\u0027.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":150,"context_line":"            networks \u003d self.context[\"tenants\"][tenant_id].get(\"networks\")"},{"line_number":151,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":152,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":153,"context_line":"            self.context[\"tenants\"][tenant_id][\"share_networks\"] \u003d []"},{"line_number":154,"context_line":"            self.context[\"tenants\"][tenant_id][\"security_services\"] \u003d []"},{"line_number":155,"context_line":"            data \u003d {\"name\": manila._generate_random_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_6beeec8c","line":152,"in_reply_to":"7a016987_2e752b97","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":150,"context_line":"            networks \u003d self.context[\"tenants\"][tenant_id].get(\"networks\")"},{"line_number":151,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":152,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":153,"context_line":"            self.context[\"tenants\"][tenant_id][\"share_networks\"] \u003d []"},{"line_number":154,"context_line":"            self.context[\"tenants\"][tenant_id][\"security_services\"] \u003d []"},{"line_number":155,"context_line":"            data \u003d {\"name\": manila._generate_random_name("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_2e752b97","line":152,"in_reply_to":"7a016987_60aa1273","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            data \u003d {\"name\": manila._generate_random_name("},{"line_number":156,"context_line":"                prefix\u003d\"rally_manila_share_network_\")}"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            def _setup_share_network(tenant_id, data):"},{"line_number":159,"context_line":"                share_network \u003d manila._create_share_network(**data)"},{"line_number":160,"context_line":"                self.context[\"tenants\"][tenant_id]["},{"line_number":161,"context_line":"                    \"share_networks\"].append(share_network)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_60c1f22e","line":158,"updated":"2015-05-29 11:41:18.000000000","message":"Please move that code to a separate function so you are able to write a unit-test for it.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            data \u003d {\"name\": manila._generate_random_name("},{"line_number":156,"context_line":"                prefix\u003d\"rally_manila_share_network_\")}"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            def _setup_share_network(tenant_id, data):"},{"line_number":159,"context_line":"                share_network \u003d manila._create_share_network(**data)"},{"line_number":160,"context_line":"                self.context[\"tenants\"][tenant_id]["},{"line_number":161,"context_line":"                    \"share_networks\"].append(share_network)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e3e3acd6","line":158,"in_reply_to":"7a016987_60c1f22e","updated":"2015-05-29 12:36:10.000000000","message":"It is covered by unit tests already.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"39d5cf60d8314650cc7e0c1d20e8b62f7869e21d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            data \u003d {\"name\": manila._generate_random_name("},{"line_number":156,"context_line":"                prefix\u003d\"rally_manila_share_network_\")}"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            def _setup_share_network(tenant_id, data):"},{"line_number":159,"context_line":"                share_network \u003d manila._create_share_network(**data)"},{"line_number":160,"context_line":"                self.context[\"tenants\"][tenant_id]["},{"line_number":161,"context_line":"                    \"share_networks\"].append(share_network)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_c9a0d144","line":158,"in_reply_to":"7a016987_e3e3acd6","updated":"2015-05-29 13:09:39.000000000","message":"Yep, but having it in a function will aid you in de-indenting the code.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            if networks:"},{"line_number":172,"context_line":"                for network in networks:"},{"line_number":173,"context_line":"                    if network.get(\"cidr\"):"},{"line_number":174,"context_line":"                        data[\"nova_net_id\"] \u003d network[\"id\"]"},{"line_number":175,"context_line":"                    elif network.get(\"subnets\"):"},{"line_number":176,"context_line":"                        data[\"neutron_net_id\"] \u003d network[\"id\"]"},{"line_number":177,"context_line":"                        data[\"neutron_subnet_id\"] \u003d network[\"subnets\"][0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_a0f92a82","line":174,"updated":"2015-05-29 11:41:18.000000000","message":"Potentially, data can contain both \"nova_net_id\" and \"neutron_net_id\" keys defined.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"66d3238f42637a2975ffcac6f79779d9ab9cbf29","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            if networks:"},{"line_number":172,"context_line":"                for network in networks:"},{"line_number":173,"context_line":"                    if network.get(\"cidr\"):"},{"line_number":174,"context_line":"                        data[\"nova_net_id\"] \u003d network[\"id\"]"},{"line_number":175,"context_line":"                    elif network.get(\"subnets\"):"},{"line_number":176,"context_line":"                        data[\"neutron_net_id\"] \u003d network[\"id\"]"},{"line_number":177,"context_line":"                        data[\"neutron_subnet_id\"] \u003d network[\"subnets\"][0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_94c2f083","line":174,"in_reply_to":"7a016987_895c194c","updated":"2015-05-29 13:45:53.000000000","message":"Code that sets data to dict is in this method and it does not set both mentioned keys at once. So, it is impossible, with existing code, to get \"`nova_net_id` and `neutron_net_id`\" be set at once.\n\nAlso, it is unclear to me what do you suggest to change making such statement.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            if networks:"},{"line_number":172,"context_line":"                for network in networks:"},{"line_number":173,"context_line":"                    if network.get(\"cidr\"):"},{"line_number":174,"context_line":"                        data[\"nova_net_id\"] \u003d network[\"id\"]"},{"line_number":175,"context_line":"                    elif network.get(\"subnets\"):"},{"line_number":176,"context_line":"                        data[\"neutron_net_id\"] \u003d network[\"id\"]"},{"line_number":177,"context_line":"                        data[\"neutron_subnet_id\"] \u003d network[\"subnets\"][0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_c3ff9064","line":174,"in_reply_to":"7a016987_a0f92a82","updated":"2015-05-29 12:36:10.000000000","message":"No, it can not. Manila API restricts it.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"39d5cf60d8314650cc7e0c1d20e8b62f7869e21d","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            if networks:"},{"line_number":172,"context_line":"                for network in networks:"},{"line_number":173,"context_line":"                    if network.get(\"cidr\"):"},{"line_number":174,"context_line":"                        data[\"nova_net_id\"] \u003d network[\"id\"]"},{"line_number":175,"context_line":"                    elif network.get(\"subnets\"):"},{"line_number":176,"context_line":"                        data[\"neutron_net_id\"] \u003d network[\"id\"]"},{"line_number":177,"context_line":"                        data[\"neutron_subnet_id\"] \u003d network[\"subnets\"][0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_895c194c","line":174,"in_reply_to":"7a016987_c3ff9064","updated":"2015-05-29 13:09:39.000000000","message":"Manila API can not restrict what a particular `dict\u0027 contains, only what `dict\u0027 the API accepts.\n\nSo, you can have a potentially thrown exception by the `_setup_share_network\u0027 here due to `data\u0027 dict containing both `nova_net_id\u0027 and `neutron_net_id\u0027.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":208,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":209,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":210,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":211,"context_line":"            objects \u003d ["},{"line_number":212,"context_line":"                {\"list\": self.context[\"tenants\"][tenant_id]["}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_2013fab9","line":209,"updated":"2015-05-29 11:41:18.000000000","message":"Please move this to a function `_cleanup_one_tenant\u0027.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":208,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":209,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":210,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":211,"context_line":"            objects \u003d ["},{"line_number":212,"context_line":"                {\"list\": self.context[\"tenants\"][tenant_id]["}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ceb1f7e1","line":209,"in_reply_to":"7a016987_2013fab9","updated":"2015-05-29 12:36:10.000000000","message":"Will do.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            return"},{"line_number":207,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":208,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":209,"context_line":"            clients \u003d osclients.Clients(user[\"endpoint\"])"},{"line_number":210,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":211,"context_line":"            objects \u003d ["},{"line_number":212,"context_line":"                {\"list\": self.context[\"tenants\"][tenant_id]["}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_661d0373","line":209,"in_reply_to":"7a016987_ceb1f7e1","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        # Use separate cycle to make share servers be deleted in parallel."},{"line_number":235,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":236,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":237,"context_line":"            clients \u003d osclients.Clients(self.context[\"admin\"][\"endpoint\"])"},{"line_number":238,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":239,"context_line":"            for sn in self.context[\"tenants\"][tenant_id][\"share_networks\"]:"},{"line_number":240,"context_line":"                share_servers \u003d manila._list_share_servers("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_207adaf1","line":237,"updated":"2015-05-29 11:41:18.000000000","message":"In case of `existing users\u0027 there could be no \"admin\" endpoint in the context.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        # Use separate cycle to make share servers be deleted in parallel."},{"line_number":235,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":236,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":237,"context_line":"            clients \u003d osclients.Clients(self.context[\"admin\"][\"endpoint\"])"},{"line_number":238,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":239,"context_line":"            for sn in self.context[\"tenants\"][tenant_id][\"share_networks\"]:"},{"line_number":240,"context_line":"                share_servers \u003d manila._list_share_servers("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_a30db43f","line":237,"in_reply_to":"7a016987_207adaf1","updated":"2015-05-29 12:36:10.000000000","message":"https://github.com/openstack/rally/blob/ba108d30/rally/deploy/engines/existing.py#L140","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"39d5cf60d8314650cc7e0c1d20e8b62f7869e21d","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        # Use separate cycle to make share servers be deleted in parallel."},{"line_number":235,"context_line":"        for user, tenant_id in (utils.iterate_per_tenants("},{"line_number":236,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":237,"context_line":"            clients \u003d osclients.Clients(self.context[\"admin\"][\"endpoint\"])"},{"line_number":238,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":239,"context_line":"            for sn in self.context[\"tenants\"][tenant_id][\"share_networks\"]:"},{"line_number":240,"context_line":"                share_servers \u003d manila._list_share_servers("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_a90d953f","line":237,"in_reply_to":"7a016987_a30db43f","updated":"2015-05-29 13:09:39.000000000","message":"This is ExistingDeployment.\n\nThe `admin\u0027 part is to be made unnecessary, so the end-users can use Rally on their non-admin user-only accounts. This is the idea behind `existing users\u0027.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":237,"context_line":"            clients \u003d osclients.Clients(self.context[\"admin\"][\"endpoint\"])"},{"line_number":238,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":239,"context_line":"            for sn in self.context[\"tenants\"][tenant_id][\"share_networks\"]:"},{"line_number":240,"context_line":"                share_servers \u003d manila._list_share_servers("},{"line_number":241,"context_line":"                    search_opts\u003d{\"share_network\": sn.id})"},{"line_number":242,"context_line":"                for share_server in share_servers:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_806bce1d","line":239,"updated":"2015-05-29 11:41:18.000000000","message":"Please move this to a `_cleanup_on_tenant\u0027 as well.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"66d3238f42637a2975ffcac6f79779d9ab9cbf29","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":237,"context_line":"            clients \u003d osclients.Clients(self.context[\"admin\"][\"endpoint\"])"},{"line_number":238,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":239,"context_line":"            for sn in self.context[\"tenants\"][tenant_id][\"share_networks\"]:"},{"line_number":240,"context_line":"                share_servers \u003d manila._list_share_servers("},{"line_number":241,"context_line":"                    search_opts\u003d{\"share_network\": sn.id})"},{"line_number":242,"context_line":"                for share_server in share_servers:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_b4cf2c7e","line":239,"in_reply_to":"7a016987_142cc097","updated":"2015-05-29 13:45:53.000000000","message":"Share server deletion is slow operation and we start deletion of all and only then wait for each other. It greatly minimizes amount of time for deletion compared to per-tenant deletion and waiting.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":237,"context_line":"            clients \u003d osclients.Clients(self.context[\"admin\"][\"endpoint\"])"},{"line_number":238,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":239,"context_line":"            for sn in self.context[\"tenants\"][tenant_id][\"share_networks\"]:"},{"line_number":240,"context_line":"                share_servers \u003d manila._list_share_servers("},{"line_number":241,"context_line":"                    search_opts\u003d{\"share_network\": sn.id})"},{"line_number":242,"context_line":"                for share_server in share_servers:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_aec59b8e","line":239,"in_reply_to":"7a016987_806bce1d","updated":"2015-05-29 12:36:10.000000000","message":"Body of this cycle is completely different than in above where proposed to move it to the same method \"_cleanup_on_tenant\". And these two cycles should go one by one. Not mixed by each tenant. So, I can move it, but to different method than proposed above.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"39d5cf60d8314650cc7e0c1d20e8b62f7869e21d","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                self.context.get(\"users\", []))):"},{"line_number":237,"context_line":"            clients \u003d osclients.Clients(self.context[\"admin\"][\"endpoint\"])"},{"line_number":238,"context_line":"            manila \u003d manila_utils.ManilaScenario(clients\u003dclients)"},{"line_number":239,"context_line":"            for sn in self.context[\"tenants\"][tenant_id][\"share_networks\"]:"},{"line_number":240,"context_line":"                share_servers \u003d manila._list_share_servers("},{"line_number":241,"context_line":"                    search_opts\u003d{\"share_network\": sn.id})"},{"line_number":242,"context_line":"                for share_server in share_servers:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_142cc097","line":239,"in_reply_to":"7a016987_aec59b8e","updated":"2015-05-29 13:09:39.000000000","message":"As far as I get it this code merely waits for each of the `share_servers\u0027 to be deleted. I think it would be better to wait for this after the command was given, not that much afterwards.\n\nBy the way, please consider using `broker\u0027 API.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            # NOTE(vponomaryov): if context arg \u0027share_networks\u0027 has values"},{"line_number":45,"context_line":"            # then they will be used else share networks will be autocreated -"},{"line_number":46,"context_line":"            # one for each tenant network. If networks do not exist then will"},{"line_number":47,"context_line":"            # be created one share network for each tenant without network"},{"line_number":48,"context_line":"            # data. This context arg will be used only when context arg"},{"line_number":49,"context_line":"            # \"use_share_networks\" is set to True and context \u0027existing_users\u0027"},{"line_number":50,"context_line":"            # is not empty, considering usage of existing users."}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_e7090286","line":47,"updated":"2015-07-10 12:24:05.000000000","message":"Please mark this as TODO because auto-generation is not implemented yet","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"07cc01d88dae03a349d23aca0ded10237a6acea2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            # NOTE(vponomaryov): if context arg \u0027share_networks\u0027 has values"},{"line_number":45,"context_line":"            # then they will be used else share networks will be autocreated -"},{"line_number":46,"context_line":"            # one for each tenant network. If networks do not exist then will"},{"line_number":47,"context_line":"            # be created one share network for each tenant without network"},{"line_number":48,"context_line":"            # data. This context arg will be used only when context arg"},{"line_number":49,"context_line":"            # \"use_share_networks\" is set to True and context \u0027existing_users\u0027"},{"line_number":50,"context_line":"            # is not empty, considering usage of existing users."}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_fc90b450","line":47,"in_reply_to":"ba3cc151_e7090286","updated":"2015-07-10 12:37:59.000000000","message":"Will sync it will follow-on commit where it is implemented.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"184ab631824725d3a59cc7b02f0121c3b39d3862","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            # NOTE(vponomaryov): if context arg \u0027share_networks\u0027 has values"},{"line_number":45,"context_line":"            # then they will be used else share networks will be autocreated -"},{"line_number":46,"context_line":"            # one for each tenant network. If networks do not exist then will"},{"line_number":47,"context_line":"            # be created one share network for each tenant without network"},{"line_number":48,"context_line":"            # data. This context arg will be used only when context arg"},{"line_number":49,"context_line":"            # \"use_share_networks\" is set to True and context \u0027existing_users\u0027"},{"line_number":50,"context_line":"            # is not empty, considering usage of existing users."}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_d3a16ff9","line":47,"in_reply_to":"ba3cc151_fc90b450","updated":"2015-07-15 20:24:39.000000000","message":"Done","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            # data. This context arg will be used only when context arg"},{"line_number":49,"context_line":"            # \"use_share_networks\" is set to True and context \u0027existing_users\u0027"},{"line_number":50,"context_line":"            # is not empty, considering usage of existing users."},{"line_number":51,"context_line":"            # Expected value is list of dicts where tenant Name or ID is key"},{"line_number":52,"context_line":"            # and list of share_network Names or IDs is value. Example:"},{"line_number":53,"context_line":"            # share_networks \u003d ["},{"line_number":54,"context_line":"            #     {\"tenant_1_name_or_id\": [\"share_network_1_name_or_id\","}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_fba8c18e","line":51,"updated":"2015-07-10 12:24:05.000000000","message":"This contradicts with L68 (value is `{}\u0027) and L83-84 (dict is expected, not list)","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"184ab631824725d3a59cc7b02f0121c3b39d3862","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            # data. This context arg will be used only when context arg"},{"line_number":49,"context_line":"            # \"use_share_networks\" is set to True and context \u0027existing_users\u0027"},{"line_number":50,"context_line":"            # is not empty, considering usage of existing users."},{"line_number":51,"context_line":"            # Expected value is list of dicts where tenant Name or ID is key"},{"line_number":52,"context_line":"            # and list of share_network Names or IDs is value. Example:"},{"line_number":53,"context_line":"            # share_networks \u003d ["},{"line_number":54,"context_line":"            #     {\"tenant_1_name_or_id\": [\"share_network_1_name_or_id\","}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_13b4b732","line":51,"in_reply_to":"ba3cc151_dc7a9025","updated":"2015-07-15 20:24:39.000000000","message":"Done","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"07cc01d88dae03a349d23aca0ded10237a6acea2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            # data. This context arg will be used only when context arg"},{"line_number":49,"context_line":"            # \"use_share_networks\" is set to True and context \u0027existing_users\u0027"},{"line_number":50,"context_line":"            # is not empty, considering usage of existing users."},{"line_number":51,"context_line":"            # Expected value is list of dicts where tenant Name or ID is key"},{"line_number":52,"context_line":"            # and list of share_network Names or IDs is value. Example:"},{"line_number":53,"context_line":"            # share_networks \u003d ["},{"line_number":54,"context_line":"            #     {\"tenant_1_name_or_id\": [\"share_network_1_name_or_id\","}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_dc7a9025","line":51,"in_reply_to":"ba3cc151_fba8c18e","updated":"2015-07-10 12:37:59.000000000","message":"Right. Will update.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                        break"},{"line_number":112,"context_line":"                else:"},{"line_number":113,"context_line":"                    msg \u003d _(\"Specified share network \u0027%(sn)s\u0027 does not \""},{"line_number":114,"context_line":"                            \"exist for tenant \u0027%(t)s\u0027\") % {"},{"line_number":115,"context_line":"                                \"sn\": sn_name_or_id, \"t\": tenant_id}"},{"line_number":116,"context_line":"                    raise exceptions.ContextSetupFailure("},{"line_number":117,"context_line":"                        ctx_name\u003dself.get_name(), msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_f93526db","line":114,"updated":"2015-07-10 12:24:05.000000000","message":"I would recommend to s/%(t)s/%(tenant)s/","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"184ab631824725d3a59cc7b02f0121c3b39d3862","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                        break"},{"line_number":112,"context_line":"                else:"},{"line_number":113,"context_line":"                    msg \u003d _(\"Specified share network \u0027%(sn)s\u0027 does not \""},{"line_number":114,"context_line":"                            \"exist for tenant \u0027%(t)s\u0027\") % {"},{"line_number":115,"context_line":"                                \"sn\": sn_name_or_id, \"t\": tenant_id}"},{"line_number":116,"context_line":"                    raise exceptions.ContextSetupFailure("},{"line_number":117,"context_line":"                        ctx_name\u003dself.get_name(), msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_f3e6f342","line":114,"in_reply_to":"ba3cc151_f93526db","updated":"2015-07-15 20:24:39.000000000","message":"Done","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                self.context[\"tenants\"][tenant_id]["},{"line_number":121,"context_line":"                    \"share_networks\"].append(sn)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            # Add generator over share networks for each project"},{"line_number":124,"context_line":"            self.context[\"tenants\"][tenant_id][\"sn_iterator\"] \u003d ("},{"line_number":125,"context_line":"                itertools.cycle("},{"line_number":126,"context_line":"                    self.context[\"tenants\"][tenant_id][\"share_networks\"]))"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_f990c650","line":123,"updated":"2015-07-10 12:24:05.000000000","message":"As commented in manila/utils.py, this generator will not work as expected","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"184ab631824725d3a59cc7b02f0121c3b39d3862","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                self.context[\"tenants\"][tenant_id]["},{"line_number":121,"context_line":"                    \"share_networks\"].append(sn)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            # Add generator over share networks for each project"},{"line_number":124,"context_line":"            self.context[\"tenants\"][tenant_id][\"sn_iterator\"] \u003d ("},{"line_number":125,"context_line":"                itertools.cycle("},{"line_number":126,"context_line":"                    self.context[\"tenants\"][tenant_id][\"share_networks\"]))"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_487cc1eb","line":123,"in_reply_to":"ba3cc151_7c858457","updated":"2015-07-15 20:24:39.000000000","message":"Done","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"07cc01d88dae03a349d23aca0ded10237a6acea2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                self.context[\"tenants\"][tenant_id]["},{"line_number":121,"context_line":"                    \"share_networks\"].append(sn)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            # Add generator over share networks for each project"},{"line_number":124,"context_line":"            self.context[\"tenants\"][tenant_id][\"sn_iterator\"] \u003d ("},{"line_number":125,"context_line":"                itertools.cycle("},{"line_number":126,"context_line":"                    self.context[\"tenants\"][tenant_id][\"share_networks\"]))"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_7c858457","line":123,"in_reply_to":"ba3cc151_f990c650","updated":"2015-07-10 12:37:59.000000000","message":"See answer there.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    @utils.log_task_wrapper(LOG.info, _(\"Enter context: `manila`\"))"},{"line_number":129,"context_line":"    def setup(self):"},{"line_number":130,"context_line":"        if not self.config[\"use_share_networks\"]:"},{"line_number":131,"context_line":"            return"},{"line_number":132,"context_line":"        elif self.context[\"config\"].get(\"existing_users\"):"},{"line_number":133,"context_line":"            self._setup_for_existing_users()"},{"line_number":134,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_26161059","line":131,"updated":"2015-07-10 12:24:05.000000000","message":"This context is intended for any Manila resources, but here we exit the whole setup() simply if use_share_networks is False.\n\nAlso method `_setup_for_existing_users()\u0027 does not specify what resources are being setup.\n\nI recommend a small change like that:\n\n if self.config[\"use_share_networks\"]:\n   self._setup_shared_networks()  # all networks-related stuff is here\n\n # NOTE: Here we can add setup code for another resources later","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"07cc01d88dae03a349d23aca0ded10237a6acea2","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    @utils.log_task_wrapper(LOG.info, _(\"Enter context: `manila`\"))"},{"line_number":129,"context_line":"    def setup(self):"},{"line_number":130,"context_line":"        if not self.config[\"use_share_networks\"]:"},{"line_number":131,"context_line":"            return"},{"line_number":132,"context_line":"        elif self.context[\"config\"].get(\"existing_users\"):"},{"line_number":133,"context_line":"            self._setup_for_existing_users()"},{"line_number":134,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_7c07c481","line":131,"in_reply_to":"ba3cc151_26161059","updated":"2015-07-10 12:37:59.000000000","message":"This \"setup\" method is used only for Manila as it is Manila\u0027s context. So, in current state of context share networks setup is the only things to do here.\n\n\u0027_setup_for_existing_users()\u0027 same as \u0027setup\u0027 just specifying case. There could be everything.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"0a6134a777341e9cb0c80ceb4ae062183dc0ec0f","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"additionalProperties\": False"},{"line_number":59,"context_line":"    }"},{"line_number":60,"context_line":"    DEFAULT_CONFIG \u003d {"},{"line_number":61,"context_line":"        \"use_share_networks\": True,"},{"line_number":62,"context_line":"        \"share_networks\": {},"},{"line_number":63,"context_line":"    }"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_385807fa","line":61,"updated":"2015-08-11 11:14:04.000000000","message":"Why this is True by default? I see that rally-manila.yaml and rally-manila-no-ss.yaml sets this to False. And another patches also uses False in most cases.","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"05ad9822bf98df93d04a72b84b0f684a937ece58","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"additionalProperties\": False"},{"line_number":59,"context_line":"    }"},{"line_number":60,"context_line":"    DEFAULT_CONFIG \u003d {"},{"line_number":61,"context_line":"        \"use_share_networks\": True,"},{"line_number":62,"context_line":"        \"share_networks\": {},"},{"line_number":63,"context_line":"    }"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_a89364f9","line":61,"in_reply_to":"1a4dcd0f_385807fa","updated":"2015-08-11 12:43:34.000000000","message":"Done","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"0a6134a777341e9cb0c80ceb4ae062183dc0ec0f","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    @utils.log_task_wrapper(LOG.info, _(\"Enter context: `manila`\"))"},{"line_number":122,"context_line":"    def setup(self):"},{"line_number":123,"context_line":"        if not self.config[\"use_share_networks\"]:"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        elif self.context[\"config\"].get(\"existing_users\"):"},{"line_number":126,"context_line":"            self._setup_for_existing_users()"},{"line_number":127,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_189f4b51","line":124,"updated":"2015-08-11 11:14:04.000000000","message":"Just to note that if use_share_networks is False then context does nothing (see my comments is yaml files)","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"05ad9822bf98df93d04a72b84b0f684a937ece58","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    @utils.log_task_wrapper(LOG.info, _(\"Enter context: `manila`\"))"},{"line_number":122,"context_line":"    def setup(self):"},{"line_number":123,"context_line":"        if not self.config[\"use_share_networks\"]:"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":"        elif self.context[\"config\"].get(\"existing_users\"):"},{"line_number":126,"context_line":"            self._setup_for_existing_users()"},{"line_number":127,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_88bf885f","line":124,"in_reply_to":"1a4dcd0f_189f4b51","updated":"2015-08-11 12:43:34.000000000","message":"Done","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"}],"rally/plugins/openstack/scenarios/manila/utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","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":21,"id":"ba3cc151_b9c31e57","line":76,"updated":"2015-07-10 12:24:05.000000000","message":"This module is intended to be used in scenarios, so generator will not work as expected since scenarios are running in different threads.\n\nUse approach similar to https://github.com/openstack/rally/blob/master/rally/plugins/openstack/wrappers/network.py#L48","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"07cc01d88dae03a349d23aca0ded10237a6acea2","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":21,"id":"ba3cc151_bc2f8c87","line":76,"in_reply_to":"ba3cc151_b9c31e57","updated":"2015-07-10 12:37:59.000000000","message":"It does work. No matter how many threads are used. It uses shared resources between all threads.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"6a67ca7e9d66ee6ea3ec40c1f1008d995c8ab6ec","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":21,"id":"ba3cc151_f2bf7bfa","line":76,"in_reply_to":"ba3cc151_bc2f8c87","updated":"2015-07-10 13:05:26.000000000","message":"Now `constant\u0027 and `rpc\u0027 runners use threads, but some (new or custom) runner can use processes, and this code is not ready for being running in separate processes:\n\nhttp://paste.openstack.org/show/361825/","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"184ab631824725d3a59cc7b02f0121c3b39d3862","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":21,"id":"9a41bdd9_7f7ffddf","line":76,"in_reply_to":"ba3cc151_f2bf7bfa","updated":"2015-07-15 20:24:39.000000000","message":"Done","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"}],"samples/tasks/scenarios/manila/create-security-service-and-delete.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":21,"context_line":"                    \"tenants\": 1,"},{"line_number":22,"context_line":"                    \"users_per_tenant\": 1"},{"line_number":23,"context_line":"                },"},{"line_number":24,"context_line":"                \"manila\": {"},{"line_number":25,"context_line":"                    \"use_share_networks\": false,"},{"line_number":26,"context_line":"                    \"share_networks\": {}"},{"line_number":27,"context_line":"                }"}],"source_content_type":"application/json","patch_set":33,"id":"1a4dcd0f_11e5dca2","line":24,"updated":"2015-08-11 14:07:54.000000000","message":"This context does nothing (\"use_share_networks\": false), remove it","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/create-security-service-and-delete.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":19,"context_line":"          tenants: 1"},{"line_number":20,"context_line":"          users_per_tenant: 1"},{"line_number":21,"context_line":"        manila:"},{"line_number":22,"context_line":"          use_share_networks: False"},{"line_number":23,"context_line":"          share_networks: {}"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"1a4dcd0f_11571c5b","line":22,"updated":"2015-08-11 14:07:54.000000000","message":"This context does nothing","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/create-share-network-and-delete.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":20,"context_line":"                    \"users_per_tenant\": 1"},{"line_number":21,"context_line":"                },"},{"line_number":22,"context_line":"                \"manila\": {"},{"line_number":23,"context_line":"                    \"use_share_networks\": false,"},{"line_number":24,"context_line":"                    \"share_networks\": {}"},{"line_number":25,"context_line":"                }"},{"line_number":26,"context_line":"            }"}],"source_content_type":"application/json","patch_set":33,"id":"1a4dcd0f_d16e942e","line":23,"updated":"2015-08-11 14:07:54.000000000","message":"This context does nothing","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/create-share-network-and-delete.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":15,"context_line":"          tenants: 2"},{"line_number":16,"context_line":"          users_per_tenant: 1"},{"line_number":17,"context_line":"        manila:"},{"line_number":18,"context_line":"          use_share_networks: False"},{"line_number":19,"context_line":"          share_networks: {}"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"1a4dcd0f_119cfc0c","line":18,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/create-share-network-and-list.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                    \"users_per_tenant\": 1"},{"line_number":25,"context_line":"                },"},{"line_number":26,"context_line":"                \"manila\": {"},{"line_number":27,"context_line":"                    \"use_share_networks\": false,"},{"line_number":28,"context_line":"                    \"share_networks\": {}"},{"line_number":29,"context_line":"                }"},{"line_number":30,"context_line":"            }"}],"source_content_type":"application/json","patch_set":33,"id":"1a4dcd0f_f1ae302d","line":27,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/create-share-network-and-list.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":18,"context_line":"          tenants: 2"},{"line_number":19,"context_line":"          users_per_tenant: 1"},{"line_number":20,"context_line":"        manila:"},{"line_number":21,"context_line":"          use_share_networks: False"},{"line_number":22,"context_line":"          share_networks: {}"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"1a4dcd0f_f175d0ca","line":21,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/create-share-without-share-networks-and-delete.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                    \"users_per_tenant\": 1"},{"line_number":25,"context_line":"                },"},{"line_number":26,"context_line":"                \"manila\": {"},{"line_number":27,"context_line":"                    \"use_share_networks\": false,"},{"line_number":28,"context_line":"                    \"share_networks\": {}"},{"line_number":29,"context_line":"                }"},{"line_number":30,"context_line":"            }"}],"source_content_type":"application/json","patch_set":33,"id":"1a4dcd0f_d15f743f","line":27,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/create-share-without-share-networks-and-delete.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":19,"context_line":"          tenants: 2"},{"line_number":20,"context_line":"          users_per_tenant: 1"},{"line_number":21,"context_line":"        manila:"},{"line_number":22,"context_line":"          use_share_networks: False"},{"line_number":23,"context_line":"          share_networks: {}"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"1a4dcd0f_f15cf04c","line":22,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/list-share-servers.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":11,"context_line":"            },"},{"line_number":12,"context_line":"            \"context\": {"},{"line_number":13,"context_line":"                \"manila\": {"},{"line_number":14,"context_line":"                    \"use_share_networks\": false,"},{"line_number":15,"context_line":"                    \"share_networks\": {}"},{"line_number":16,"context_line":"                }"},{"line_number":17,"context_line":"            }"}],"source_content_type":"application/json","patch_set":33,"id":"1a4dcd0f_51328411","line":14,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/list-share-servers.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":9,"context_line":"        concurrency: 10"},{"line_number":10,"context_line":"      context:"},{"line_number":11,"context_line":"        manila:"},{"line_number":12,"context_line":"          use_share_networks: False"},{"line_number":13,"context_line":"          share_networks: {}"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"1a4dcd0f_11387ced","line":12,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/list-shares.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":15,"context_line":"                    \"users_per_tenant\": 1"},{"line_number":16,"context_line":"                },"},{"line_number":17,"context_line":"                \"manila\": {"},{"line_number":18,"context_line":"                    \"use_share_networks\": false,"},{"line_number":19,"context_line":"                    \"share_networks\": {}"},{"line_number":20,"context_line":"                }"},{"line_number":21,"context_line":"            }"}],"source_content_type":"application/json","patch_set":33,"id":"1a4dcd0f_912c8cad","line":18,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"samples/tasks/scenarios/manila/list-shares.yaml":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"d374e1dd3bdbd7d951d6ed0dbfa6dc14e0609264","unresolved":false,"context_lines":[{"line_number":12,"context_line":"          tenants: 1"},{"line_number":13,"context_line":"          users_per_tenant: 1"},{"line_number":14,"context_line":"        manila:"},{"line_number":15,"context_line":"          use_share_networks: False"},{"line_number":16,"context_line":"          share_networks: {}"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"1a4dcd0f_711ea071","line":15,"updated":"2015-08-11 14:07:54.000000000","message":"ditto","commit_id":"12b0eeafde4bcf02dc35e8f9046daf957e092a67"}],"tests/unit/plugins/openstack/context/test_manila.py":[{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from rally import consts"},{"line_number":24,"context_line":"from rally import exceptions"},{"line_number":25,"context_line":"from rally.plugins.openstack.context import manila"},{"line_number":26,"context_line":"from tests.unit import test"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"MANILA_UTILS_PATH \u003d (\"rally.plugins.openstack.scenarios.manila.utils.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e056025d","line":25,"updated":"2015-05-29 11:41:18.000000000","message":"manila_ctx","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from rally import consts"},{"line_number":24,"context_line":"from rally import exceptions"},{"line_number":25,"context_line":"from rally.plugins.openstack.context import manila"},{"line_number":26,"context_line":"from tests.unit import test"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"MANILA_UTILS_PATH \u003d (\"rally.plugins.openstack.scenarios.manila.utils.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_a1ee45ea","line":25,"in_reply_to":"7a016987_8e52df65","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from rally import consts"},{"line_number":24,"context_line":"from rally import exceptions"},{"line_number":25,"context_line":"from rally.plugins.openstack.context import manila"},{"line_number":26,"context_line":"from tests.unit import test"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"MANILA_UTILS_PATH \u003d (\"rally.plugins.openstack.scenarios.manila.utils.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_8e52df65","line":25,"in_reply_to":"7a016987_e056025d","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        for ss_type in (\"ldap\", \"kerberos\", \"active_directory\")"},{"line_number":45,"context_line":"    ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _gen_context(self, use_security_services\u003dFalse, networks_per_tenant\u003d2,"},{"line_number":48,"context_line":"                     neutron_network_provider\u003dTrue):"},{"line_number":49,"context_line":"        tenants \u003d {}"},{"line_number":50,"context_line":"        for t_id in range(self.TENANTS_AMOUNT):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_404836b3","line":47,"updated":"2015-05-29 11:41:18.000000000","message":"I think `_get_context\u0027 is a better name.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        for ss_type in (\"ldap\", \"kerberos\", \"active_directory\")"},{"line_number":45,"context_line":"    ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _gen_context(self, use_security_services\u003dFalse, networks_per_tenant\u003d2,"},{"line_number":48,"context_line":"                     neutron_network_provider\u003dTrue):"},{"line_number":49,"context_line":"        tenants \u003d {}"},{"line_number":50,"context_line":"        for t_id in range(self.TENANTS_AMOUNT):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_4e006702","line":47,"in_reply_to":"7a016987_404836b3","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        for ss_type in (\"ldap\", \"kerberos\", \"active_directory\")"},{"line_number":45,"context_line":"    ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _gen_context(self, use_security_services\u003dFalse, networks_per_tenant\u003d2,"},{"line_number":48,"context_line":"                     neutron_network_provider\u003dTrue):"},{"line_number":49,"context_line":"        tenants \u003d {}"},{"line_number":50,"context_line":"        for t_id in range(self.TENANTS_AMOUNT):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_61bf2dd1","line":47,"in_reply_to":"7a016987_4e006702","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        inst \u003d manila.Manila(context)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.assertEqual(inst.config, context[\"config\"][\"manila\"])"},{"line_number":130,"context_line":"        self.assertIn(consts.JSON_SCHEMA, inst.CONFIG_SCHEMA.get(\"$schema\"))"},{"line_number":131,"context_line":"        self.assertEqual(False, inst.CONFIG_SCHEMA.get(\"additionalProperties\"))"},{"line_number":132,"context_line":"        self.assertEqual(\"object\", inst.CONFIG_SCHEMA.get(\"type\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e0cde230","line":129,"updated":"2015-05-29 11:41:18.000000000","message":"Order is otherwise.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        inst \u003d manila.Manila(context)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.assertEqual(inst.config, context[\"config\"][\"manila\"])"},{"line_number":130,"context_line":"        self.assertIn(consts.JSON_SCHEMA, inst.CONFIG_SCHEMA.get(\"$schema\"))"},{"line_number":131,"context_line":"        self.assertEqual(False, inst.CONFIG_SCHEMA.get(\"additionalProperties\"))"},{"line_number":132,"context_line":"        self.assertEqual(\"object\", inst.CONFIG_SCHEMA.get(\"type\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ee56f35c","line":129,"in_reply_to":"7a016987_e0cde230","updated":"2015-05-29 12:36:10.000000000","message":"will reorder.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        inst \u003d manila.Manila(context)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.assertEqual(inst.config, context[\"config\"][\"manila\"])"},{"line_number":130,"context_line":"        self.assertIn(consts.JSON_SCHEMA, inst.CONFIG_SCHEMA.get(\"$schema\"))"},{"line_number":131,"context_line":"        self.assertEqual(False, inst.CONFIG_SCHEMA.get(\"additionalProperties\"))"},{"line_number":132,"context_line":"        self.assertEqual(\"object\", inst.CONFIG_SCHEMA.get(\"type\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_e192fd56","line":129,"in_reply_to":"7a016987_ee56f35c","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        inst \u003d manila.Manila(context)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.assertEqual(inst.config, context[\"config\"][\"manila\"])"},{"line_number":130,"context_line":"        self.assertIn(consts.JSON_SCHEMA, inst.CONFIG_SCHEMA.get(\"$schema\"))"},{"line_number":131,"context_line":"        self.assertEqual(False, inst.CONFIG_SCHEMA.get(\"additionalProperties\"))"},{"line_number":132,"context_line":"        self.assertEqual(\"object\", inst.CONFIG_SCHEMA.get(\"type\"))"},{"line_number":133,"context_line":"        props \u003d inst.CONFIG_SCHEMA.get(\"properties\", {})"},{"line_number":134,"context_line":"        self.assertEqual({\"type\": \"array\"}, props.get(\"security_services\"))"},{"line_number":135,"context_line":"        self.assertEqual({\"type\": \"object\"}, props.get(\"share_networks\"))"},{"line_number":136,"context_line":"        self.assertEqual({\"type\": \"boolean\"}, props.get(\"use_share_networks\"))"},{"line_number":137,"context_line":"        self.assertEqual("},{"line_number":138,"context_line":"            {\"type\": \"boolean\"}, props.get(\"use_security_services\"))"},{"line_number":139,"context_line":"        self.assertEqual(450, inst.get_order())"},{"line_number":140,"context_line":"        self.assertEqual(\"manila\", inst.get_name())"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_setup_share_networks_disabled(self):"},{"line_number":143,"context_line":"        ctxt \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_a0036a41","line":140,"range":{"start_line":130,"start_character":0,"end_line":140,"end_character":51},"updated":"2015-05-29 11:41:18.000000000","message":"1. Not required.\n2. CONFIG_SCHEMA is a class-wide variable and has nothing to do with __init__ call.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.assertEqual("},{"line_number":138,"context_line":"            {\"type\": \"boolean\"}, props.get(\"use_security_services\"))"},{"line_number":139,"context_line":"        self.assertEqual(450, inst.get_order())"},{"line_number":140,"context_line":"        self.assertEqual(\"manila\", inst.get_name())"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_setup_share_networks_disabled(self):"},{"line_number":143,"context_line":"        ctxt \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_01dcf9e2","line":140,"in_reply_to":"7a016987_946670eb","updated":"2015-06-02 15:38:07.000000000","message":"All things tested here are set as part of manila-end-class and they are tested only here. It is easy to have broken \"type\" of some property, unexpected \"order\" of Manila resources or \"name\" of context... So, I don\u0027t agree that it is not required.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.assertEqual("},{"line_number":138,"context_line":"            {\"type\": \"boolean\"}, props.get(\"use_security_services\"))"},{"line_number":139,"context_line":"        self.assertEqual(450, inst.get_order())"},{"line_number":140,"context_line":"        self.assertEqual(\"manila\", inst.get_name())"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_setup_share_networks_disabled(self):"},{"line_number":143,"context_line":"        ctxt \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ce133764","line":140,"in_reply_to":"7a016987_a0036a41","updated":"2015-05-29 12:36:10.000000000","message":"What it is not required?","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"82c2b5fbc942d92af61d71db9f82e8c91fcfb37f","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.assertEqual("},{"line_number":138,"context_line":"            {\"type\": \"boolean\"}, props.get(\"use_security_services\"))"},{"line_number":139,"context_line":"        self.assertEqual(450, inst.get_order())"},{"line_number":140,"context_line":"        self.assertEqual(\"manila\", inst.get_name())"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_setup_share_networks_disabled(self):"},{"line_number":143,"context_line":"        ctxt \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e96a6db4","line":140,"in_reply_to":"7a016987_ce133764","updated":"2015-05-29 12:37:24.000000000","message":"*Why?","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"39d5cf60d8314650cc7e0c1d20e8b62f7869e21d","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.assertEqual("},{"line_number":138,"context_line":"            {\"type\": \"boolean\"}, props.get(\"use_security_services\"))"},{"line_number":139,"context_line":"        self.assertEqual(450, inst.get_order())"},{"line_number":140,"context_line":"        self.assertEqual(\"manila\", inst.get_name())"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_setup_share_networks_disabled(self):"},{"line_number":143,"context_line":"        ctxt \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_946670eb","line":140,"in_reply_to":"7a016987_e96a6db4","updated":"2015-05-29 13:09:39.000000000","message":"Because what you are trying to test here is that your CONFIG_SCHEMA is accessible as a class variable from the instance.\n\nThis seems a little bit odd, as this is surely tested in the Python test suite.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @mock.patch(\"rally.osclients.Clients\")"},{"line_number":156,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_list_share_networks\")"},{"line_number":157,"context_line":"    def test_setup_use_existing_share_networks(self, list_sns, osclients):"},{"line_number":158,"context_line":"        existing_sns \u003d self.existing_sns"},{"line_number":159,"context_line":"        inst \u003d manila.Manila(self.ctxt_use_existing)"},{"line_number":160,"context_line":"        list_sns.return_value \u003d self.existing_sns"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_60a7b250","line":157,"range":{"start_line":157,"start_character":63,"end_line":157,"end_character":72},"updated":"2015-05-29 11:41:18.000000000","message":"Please name these `mock_osclients\u0027.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @mock.patch(\"rally.osclients.Clients\")"},{"line_number":156,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_list_share_networks\")"},{"line_number":157,"context_line":"    def test_setup_use_existing_share_networks(self, list_sns, osclients):"},{"line_number":158,"context_line":"        existing_sns \u003d self.existing_sns"},{"line_number":159,"context_line":"        inst \u003d manila.Manila(self.ctxt_use_existing)"},{"line_number":160,"context_line":"        list_sns.return_value \u003d self.existing_sns"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_1c5c6024","line":157,"in_reply_to":"7a016987_4ef6275e","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @mock.patch(\"rally.osclients.Clients\")"},{"line_number":156,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_list_share_networks\")"},{"line_number":157,"context_line":"    def test_setup_use_existing_share_networks(self, list_sns, osclients):"},{"line_number":158,"context_line":"        existing_sns \u003d self.existing_sns"},{"line_number":159,"context_line":"        inst \u003d manila.Manila(self.ctxt_use_existing)"},{"line_number":160,"context_line":"        list_sns.return_value \u003d self.existing_sns"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_4ef6275e","line":157,"in_reply_to":"7a016987_60a7b250","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        inst.setup()"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self.assertEqual(expected_ctxt[\"task\"], inst.context.get(\"task\"))"},{"line_number":181,"context_line":"        self.assertEqual(expected_ctxt[\"config\"], inst.context.get(\"config\"))"},{"line_number":182,"context_line":"        self.assertEqual(expected_ctxt[\"users\"], inst.context.get(\"users\"))"},{"line_number":183,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_e09ba215","line":180,"updated":"2015-05-29 11:41:18.000000000","message":"Why do you use .get(\"task\") instead of context[\"task\"] ?","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        inst.setup()"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self.assertEqual(expected_ctxt[\"task\"], inst.context.get(\"task\"))"},{"line_number":181,"context_line":"        self.assertEqual(expected_ctxt[\"config\"], inst.context.get(\"config\"))"},{"line_number":182,"context_line":"        self.assertEqual(expected_ctxt[\"users\"], inst.context.get(\"users\"))"},{"line_number":183,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_8e877fb4","line":180,"in_reply_to":"7a016987_e09ba215","updated":"2015-05-29 12:36:10.000000000","message":"It is intentional. In case it is absent we will get AssertionError with autotaken \u0027None\u0027 instead of general KeyError","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        inst.setup()"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self.assertEqual(expected_ctxt[\"task\"], inst.context.get(\"task\"))"},{"line_number":181,"context_line":"        self.assertEqual(expected_ctxt[\"config\"], inst.context.get(\"config\"))"},{"line_number":182,"context_line":"        self.assertEqual(expected_ctxt[\"users\"], inst.context.get(\"users\"))"},{"line_number":183,"context_line":"        self.assertEqual("},{"line_number":184,"context_line":"            False, inst.context.get(\"manila_delete_share_networks\"))"},{"line_number":185,"context_line":"        self.assertEqual(expected_ctxt[\"tenants\"], inst.context.get(\"tenants\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_2300a400","line":182,"range":{"start_line":181,"start_character":8,"end_line":182,"end_character":75},"updated":"2015-05-29 11:41:18.000000000","message":"You can call self.assertEqual(expected_ctx, inst.context) instead. Overall, we do not use these checks anymore because they basically check nothing.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"39d5cf60d8314650cc7e0c1d20e8b62f7869e21d","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self.assertEqual(expected_ctxt[\"task\"], inst.context.get(\"task\"))"},{"line_number":181,"context_line":"        self.assertEqual(expected_ctxt[\"config\"], inst.context.get(\"config\"))"},{"line_number":182,"context_line":"        self.assertEqual(expected_ctxt[\"users\"], inst.context.get(\"users\"))"},{"line_number":183,"context_line":"        self.assertEqual("},{"line_number":184,"context_line":"            False, inst.context.get(\"manila_delete_share_networks\"))"},{"line_number":185,"context_line":"        self.assertEqual(expected_ctxt[\"tenants\"], inst.context.get(\"tenants\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_d4a6280e","line":182,"in_reply_to":"7a016987_0e694ff9","updated":"2015-05-29 13:09:39.000000000","message":"Well, assertEqual shows you both `expected\u0027 and `actual\u0027 dicts. So this code is an overkill IMO.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self.assertEqual(expected_ctxt[\"task\"], inst.context.get(\"task\"))"},{"line_number":181,"context_line":"        self.assertEqual(expected_ctxt[\"config\"], inst.context.get(\"config\"))"},{"line_number":182,"context_line":"        self.assertEqual(expected_ctxt[\"users\"], inst.context.get(\"users\"))"},{"line_number":183,"context_line":"        self.assertEqual("},{"line_number":184,"context_line":"            False, inst.context.get(\"manila_delete_share_networks\"))"},{"line_number":185,"context_line":"        self.assertEqual(expected_ctxt[\"tenants\"], inst.context.get(\"tenants\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_0e694ff9","line":182,"in_reply_to":"7a016987_2300a400","updated":"2015-05-29 12:36:10.000000000","message":"Same here. It is intentional. When expected context and actual are different then in case of two dicts comparison we will not get explicit place of error, but just statement - these two dicts are different. It minimizes further debug time.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self.assertEqual(expected_ctxt[\"task\"], inst.context.get(\"task\"))"},{"line_number":181,"context_line":"        self.assertEqual(expected_ctxt[\"config\"], inst.context.get(\"config\"))"},{"line_number":182,"context_line":"        self.assertEqual(expected_ctxt[\"users\"], inst.context.get(\"users\"))"},{"line_number":183,"context_line":"        self.assertEqual("},{"line_number":184,"context_line":"            False, inst.context.get(\"manila_delete_share_networks\"))"},{"line_number":185,"context_line":"        self.assertEqual(expected_ctxt[\"tenants\"], inst.context.get(\"tenants\"))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_fcc4e492","line":182,"in_reply_to":"7a016987_d4a6280e","updated":"2015-06-02 15:38:07.000000000","message":"Right, shows two big dicts and proposes to play game finding ten differences. Leaving as is.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"284f4671ad7867c313b4c6ddd12a90ac2fb788b0","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_create_security_service\")"},{"line_number":223,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_add_security_service_to_share_network\")"},{"line_number":224,"context_line":"    def test_setup_autocreate_share_networks_with_security_services("},{"line_number":225,"context_line":"            self, neutron, add_ss_to_sn, create_ss, create_sn, osclients):"},{"line_number":226,"context_line":"        networks_per_tenant \u003d 2"},{"line_number":227,"context_line":"        ctxt \u003d self._gen_context("},{"line_number":228,"context_line":"            networks_per_tenant\u003dnetworks_per_tenant,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_2019ba88","line":225,"range":{"start_line":225,"start_character":27,"end_line":225,"end_character":72},"updated":"2015-05-29 11:41:18.000000000","message":"1. Please prefix these with mock_","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"2207ebc242d5aabe842d3315d826f5719d4eefd4","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_create_security_service\")"},{"line_number":223,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_add_security_service_to_share_network\")"},{"line_number":224,"context_line":"    def test_setup_autocreate_share_networks_with_security_services("},{"line_number":225,"context_line":"            self, neutron, add_ss_to_sn, create_ss, create_sn, osclients):"},{"line_number":226,"context_line":"        networks_per_tenant \u003d 2"},{"line_number":227,"context_line":"        ctxt \u003d self._gen_context("},{"line_number":228,"context_line":"            networks_per_tenant\u003dnetworks_per_tenant,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ae78fbc4","line":225,"in_reply_to":"7a016987_2019ba88","updated":"2015-05-29 12:36:10.000000000","message":"Will change.","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e17aeb4f3ab905757758bbc0af2a76fe1f0f4c04","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_create_security_service\")"},{"line_number":223,"context_line":"    @mock.patch(MANILA_UTILS_PATH + \"_add_security_service_to_share_network\")"},{"line_number":224,"context_line":"    def test_setup_autocreate_share_networks_with_security_services("},{"line_number":225,"context_line":"            self, neutron, add_ss_to_sn, create_ss, create_sn, osclients):"},{"line_number":226,"context_line":"        networks_per_tenant \u003d 2"},{"line_number":227,"context_line":"        ctxt \u003d self._gen_context("},{"line_number":228,"context_line":"            networks_per_tenant\u003dnetworks_per_tenant,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_5c3c1893","line":225,"in_reply_to":"7a016987_ae78fbc4","updated":"2015-06-02 15:38:07.000000000","message":"Done","commit_id":"67a9d284bc2e947773b42093d1b219f2de3e78e2"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_init(self):"},{"line_number":61,"context_line":"        context \u003d {}"},{"line_number":62,"context_line":"        context[\"task\"] \u003d mock.MagicMock()"},{"line_number":63,"context_line":"        context[\"config\"] \u003d {"},{"line_number":64,"context_line":"            \"manila\": {\"foo\": \"bar\"},"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_f921a6fd","line":61,"updated":"2015-07-10 12:24:05.000000000","message":"Why not create context in single statement?\n\n context \u003d {\"task\": ...,\n            \"config\": ...}","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"184ab631824725d3a59cc7b02f0121c3b39d3862","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_init(self):"},{"line_number":61,"context_line":"        context \u003d {}"},{"line_number":62,"context_line":"        context[\"task\"] \u003d mock.MagicMock()"},{"line_number":63,"context_line":"        context[\"config\"] \u003d {"},{"line_number":64,"context_line":"            \"manila\": {\"foo\": \"bar\"},"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_3080d1f4","line":61,"in_reply_to":"ba3cc151_9c188820","updated":"2015-07-15 20:24:39.000000000","message":"Done","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"07cc01d88dae03a349d23aca0ded10237a6acea2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        ]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_init(self):"},{"line_number":61,"context_line":"        context \u003d {}"},{"line_number":62,"context_line":"        context[\"task\"] \u003d mock.MagicMock()"},{"line_number":63,"context_line":"        context[\"config\"] \u003d {"},{"line_number":64,"context_line":"            \"manila\": {\"foo\": \"bar\"},"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_9c188820","line":61,"in_reply_to":"ba3cc151_f921a6fd","updated":"2015-07-10 12:37:59.000000000","message":"Will update in following patch.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e867dc71751266f2334ca38bd9b62dbd393e2144","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.assertEqual(context[\"config\"][\"manila\"], inst.config)"},{"line_number":71,"context_line":"        self.assertIn(consts.JSON_SCHEMA, inst.CONFIG_SCHEMA.get(\"$schema\"))"},{"line_number":72,"context_line":"        self.assertEqual(False, inst.CONFIG_SCHEMA.get(\"additionalProperties\"))"},{"line_number":73,"context_line":"        self.assertEqual(\"object\", inst.CONFIG_SCHEMA.get(\"type\"))"},{"line_number":74,"context_line":"        props \u003d inst.CONFIG_SCHEMA.get(\"properties\", {})"},{"line_number":75,"context_line":"        self.assertEqual({\"type\": \"object\"}, props.get(\"share_networks\"))"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_59ec5292","line":72,"updated":"2015-07-10 12:24:05.000000000","message":"IMO better approach to test schema is running self.assertRaises() for wrong input","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"07cc01d88dae03a349d23aca0ded10237a6acea2","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.assertEqual(context[\"config\"][\"manila\"], inst.config)"},{"line_number":71,"context_line":"        self.assertIn(consts.JSON_SCHEMA, inst.CONFIG_SCHEMA.get(\"$schema\"))"},{"line_number":72,"context_line":"        self.assertEqual(False, inst.CONFIG_SCHEMA.get(\"additionalProperties\"))"},{"line_number":73,"context_line":"        self.assertEqual(\"object\", inst.CONFIG_SCHEMA.get(\"type\"))"},{"line_number":74,"context_line":"        props \u003d inst.CONFIG_SCHEMA.get(\"properties\", {})"},{"line_number":75,"context_line":"        self.assertEqual({\"type\": \"object\"}, props.get(\"share_networks\"))"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_bcfeacac","line":72,"in_reply_to":"ba3cc151_59ec5292","updated":"2015-07-10 12:37:59.000000000","message":"If something does not work when it is expected does not mean at all that it works when expected.","commit_id":"a0bed33a66414ba729dd5ee05f7805d3ab3a636d"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e00cf3353d6139f8c6d3d6f9c8e0cd528258999d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            False, inst.context.get(\"manila_delete_share_networks\"))"},{"line_number":125,"context_line":"        self.assertEqual(expected_ctxt[\"tenants\"], inst.context.get(\"tenants\"))"},{"line_number":126,"context_line":"        for i, sns in ((1, existing_sns[0:2]), (2, existing_sns[2:5])):"},{"line_number":127,"context_line":"            for j in range(12):"},{"line_number":128,"context_line":"                self.assertEqual("},{"line_number":129,"context_line":"                    j,"},{"line_number":130,"context_line":"                    next(inst.context[\"tenants\"][\"tenant_%s_id\" % i]["}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_88cdbb5f","line":127,"updated":"2015-07-16 14:49:34.000000000","message":"I would recommend to add a check that all inst.context[\"tenants\"][\u003ctenant_id\u003e][\"sn_iterator\"] are instances of RAMIint","commit_id":"fec010c93c075ba85b6dffdf773ce2184c86183e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4da2f455204301b3a6c283408619d49144975c0d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            False, inst.context.get(\"manila_delete_share_networks\"))"},{"line_number":125,"context_line":"        self.assertEqual(expected_ctxt[\"tenants\"], inst.context.get(\"tenants\"))"},{"line_number":126,"context_line":"        for i, sns in ((1, existing_sns[0:2]), (2, existing_sns[2:5])):"},{"line_number":127,"context_line":"            for j in range(12):"},{"line_number":128,"context_line":"                self.assertEqual("},{"line_number":129,"context_line":"                    j,"},{"line_number":130,"context_line":"                    next(inst.context[\"tenants\"][\"tenant_%s_id\" % i]["}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_bc6478e5","line":127,"in_reply_to":"9a41bdd9_88cdbb5f","updated":"2015-07-16 17:07:46.000000000","message":"Done","commit_id":"fec010c93c075ba85b6dffdf773ce2184c86183e"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"5a76007c89f75846ed42e8deeff8b998c7024686","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from rally.plugins.openstack.context import manila as manila_context"},{"line_number":24,"context_line":"from tests.unit import test"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"MANILA_UTILS_PATH \u003d (\"rally.plugins.openstack.scenarios.manila.utils.\""},{"line_number":27,"context_line":"                     \"ManilaScenario.\")"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"3a50d1a3_13bce2b9","line":26,"updated":"2015-07-28 12:11:46.000000000","message":"I would recommend using shorter name: s/MANILA_UTILS_PATH/SCENARIO/","commit_id":"c7b1a6dd6904a8a7c8f5ac69a0c413b1d3470986"}],"tests/unit/plugins/openstack/scenarios/manila/test_utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e00cf3353d6139f8c6d3d6f9c8e0cd528258999d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"},{"line_number":45,"context_line":"            }"},{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":"        self.scenario.context[\"tenant\"][\"sn_iterator\"] \u003d common_utils.RAMInt()"},{"line_number":48,"context_line":"        self.scenario._generate_random_name \u003d mock.Mock(return_value\u003dfake_name)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        self.scenario._create_share(\"nfs\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_a8b2ff04","line":47,"updated":"2015-07-16 14:49:34.000000000","message":"There is no reason to use RAMInt here, for this case iter(xrange(...)) is enough","commit_id":"fec010c93c075ba85b6dffdf773ce2184c86183e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4da2f455204301b3a6c283408619d49144975c0d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"},{"line_number":45,"context_line":"            }"},{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":"        self.scenario.context[\"tenant\"][\"sn_iterator\"] \u003d common_utils.RAMInt()"},{"line_number":48,"context_line":"        self.scenario._generate_random_name \u003d mock.Mock(return_value\u003dfake_name)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        self.scenario._create_share(\"nfs\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"9a41bdd9_a178d52c","line":47,"in_reply_to":"9a41bdd9_a8b2ff04","updated":"2015-07-16 17:07:46.000000000","message":"This is \"be-close-enough-to-the-original\". So, I would I like to leave it as is.","commit_id":"fec010c93c075ba85b6dffdf773ce2184c86183e"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"76b3488931fb5811094960ef6822e08b0ab7f6a3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"},{"line_number":40,"context_line":"            }"},{"line_number":41,"context_line":"        }"},{"line_number":42,"context_line":"        self.scenario.context[\"tenant\"][\"sn_iterator\"] \u003d common_utils.RAMInt()"},{"line_number":43,"context_line":"        self.scenario._generate_random_name \u003d mock.Mock(return_value\u003dfake_name)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        self.scenario._create_share(\"nfs\")"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_3e41cf0b","line":42,"updated":"2015-08-11 11:51:30.000000000","message":"RAMInt() is not required here, `range(...)\u0027 is enough","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"05ad9822bf98df93d04a72b84b0f684a937ece58","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                \"share_networks\": [\"sn_1_id\", \"sn_2_id\", ],"},{"line_number":40,"context_line":"            }"},{"line_number":41,"context_line":"        }"},{"line_number":42,"context_line":"        self.scenario.context[\"tenant\"][\"sn_iterator\"] \u003d common_utils.RAMInt()"},{"line_number":43,"context_line":"        self.scenario._generate_random_name \u003d mock.Mock(return_value\u003dfake_name)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        self.scenario._create_share(\"nfs\")"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_e8b08c8d","line":42,"in_reply_to":"1a4dcd0f_3e41cf0b","updated":"2015-08-11 12:43:34.000000000","message":"Done","commit_id":"a4066a9e0530e79d9935b7c01170c8fe08e6fd5a"}]}
