)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"226fe8e82b87025a5d39dce6331e84dd125d5d6b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add admin network for DHSS\u003dTrue share drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For DHSS\u003dTrue share drivers, the manager needs to provide an additional"},{"line_number":10,"context_line":"pool of IP addresses (using an additional network plugin) so drivers have a way"},{"line_number":11,"context_line":"to create export locations accessible on the admin network."},{"line_number":12,"context_line":"Admin network is useful for such feature as \"share migration\"."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a5ae5dd_10cf97b1","line":10,"range":{"start_line":10,"start_character":58,"end_line":10,"end_character":79},"updated":"2016-02-03 13:45:39.000000000","message":"please limit to 72 chars on your next patchset, if any","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f895e3a4adb979111c58e52674f90d05773780d4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add admin network for DHSS\u003dTrue share drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For DHSS\u003dTrue share drivers, the manager needs to provide an additional"},{"line_number":10,"context_line":"pool of IP addresses (using an additional network plugin) so drivers have a way"},{"line_number":11,"context_line":"to create export locations accessible on the admin network."},{"line_number":12,"context_line":"Admin network is useful for such feature as \"share migration\"."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a5ae5dd_ac03c7b7","line":10,"range":{"start_line":10,"start_character":58,"end_line":10,"end_character":79},"in_reply_to":"5a5ae5dd_10cf97b1","updated":"2016-02-03 15:21:32.000000000","message":"Done","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"}],"manila/db/migrations/alembic/versions/5155c7077f99_add_label_column_to_network_allocations_table.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    default_value \u003d \u0027user\u0027"},{"line_number":34,"context_line":"    op.add_column("},{"line_number":35,"context_line":"        \u0027network_allocations\u0027,"},{"line_number":36,"context_line":"        sa.Column(\u0027label\u0027,"},{"line_number":37,"context_line":"                  sa.String(255),"},{"line_number":38,"context_line":"                  default\u003ddefault_value,"},{"line_number":39,"context_line":"                  server_default\u003ddefault_value,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_c610735c","line":36,"range":{"start_line":36,"start_character":19,"end_line":36,"end_character":24},"updated":"2016-01-16 03:55:08.000000000","message":"the naming is too generic. \u0027user\u0027 and \u0027admin\u0027 are \u0027network_type\u0027s... wouldn\u0027t that be a better name?","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"116fa13c0d7664a9e14d0ed7db6a42f8fd200465","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    default_value \u003d \u0027user\u0027"},{"line_number":34,"context_line":"    op.add_column("},{"line_number":35,"context_line":"        \u0027network_allocations\u0027,"},{"line_number":36,"context_line":"        sa.Column(\u0027label\u0027,"},{"line_number":37,"context_line":"                  sa.String(255),"},{"line_number":38,"context_line":"                  default\u003ddefault_value,"},{"line_number":39,"context_line":"                  server_default\u003ddefault_value,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_3a025270","line":36,"range":{"start_line":36,"start_character":19,"end_line":36,"end_character":24},"in_reply_to":"da6ed579_c610735c","updated":"2016-01-22 10:30:00.000000000","message":"It is not network type. \"Network type\" is used for things like \"flat\", \"vlan\", \"vxlan\", \"gre\", etc... And you propose to implement very confusing naming.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"4d62b89b64ca58415e946de465bf41a9d9c72f91","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                  sa.String(255),"},{"line_number":38,"context_line":"                  default\u003ddefault_value,"},{"line_number":39,"context_line":"                  server_default\u003ddefault_value,"},{"line_number":40,"context_line":"                  nullable\u003dTrue),"},{"line_number":41,"context_line":"    )"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_91599e37","line":40,"range":{"start_line":40,"start_character":18,"end_line":40,"end_character":31},"updated":"2016-02-12 20:06:30.000000000","message":"I see this field is used with default value \u0027user\u0027 everywhere. Why is this nullable then?","commit_id":"a4e3f6a113b1414a3fd9860bbc065cd27497e46e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"79aad8436330a7495b77957d4aea6d059d70a366","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                  sa.String(255),"},{"line_number":38,"context_line":"                  default\u003ddefault_value,"},{"line_number":39,"context_line":"                  server_default\u003ddefault_value,"},{"line_number":40,"context_line":"                  nullable\u003dTrue),"},{"line_number":41,"context_line":"    )"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a57f1b5_b929208c","line":40,"range":{"start_line":40,"start_character":18,"end_line":40,"end_character":31},"in_reply_to":"3a57f1b5_91599e37","updated":"2016-02-12 21:10:09.000000000","message":"For compatibility reasons with old approach. Null equals to \"user\".","commit_id":"a4e3f6a113b1414a3fd9860bbc065cd27497e46e"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":2771,"context_line":"        if label !\u003d \u0027admin\u0027:"},{"line_number":2772,"context_line":"            query \u003d query.filter(or_("},{"line_number":2773,"context_line":"                # NOTE(vponomaryov): we treat None as alias for \u0027user\u0027."},{"line_number":2774,"context_line":"                models.NetworkAllocation.label \u003d\u003d None,  # noqa"},{"line_number":2775,"context_line":"                models.NetworkAllocation.label \u003d\u003d label,"},{"line_number":2776,"context_line":"            ))"},{"line_number":2777,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_411c6d6a","line":2774,"range":{"start_line":2774,"start_character":46,"end_line":2774,"end_character":54},"updated":"2016-01-16 03:55:08.000000000","message":"You can get rid of the noqa if you use isnot(None) I guess..","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"116fa13c0d7664a9e14d0ed7db6a42f8fd200465","unresolved":false,"context_lines":[{"line_number":2771,"context_line":"        if label !\u003d \u0027admin\u0027:"},{"line_number":2772,"context_line":"            query \u003d query.filter(or_("},{"line_number":2773,"context_line":"                # NOTE(vponomaryov): we treat None as alias for \u0027user\u0027."},{"line_number":2774,"context_line":"                models.NetworkAllocation.label \u003d\u003d None,  # noqa"},{"line_number":2775,"context_line":"                models.NetworkAllocation.label \u003d\u003d label,"},{"line_number":2776,"context_line":"            ))"},{"line_number":2777,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_bf1cf4c1","line":2774,"range":{"start_line":2774,"start_character":46,"end_line":2774,"end_character":54},"in_reply_to":"da6ed579_411c6d6a","updated":"2016-01-22 10:30:00.000000000","message":"Sqlalchemy, for some reason, did fail to use \"_in\" for (None, label), that is why I used \"_or\" with explicit equality comparison. Your proposal using \"isnot\" breaks intended logic.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"}],"manila/network/standalone_network_plugin.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a4346668ee4965f29c8f165d8a28d87343356486","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                \u0027ip_address\u0027: ip_address,"},{"line_number":279,"context_line":"                \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":280,"context_line":"                \u0027label\u0027: self.label,"},{"line_number":281,"context_line":"                \u0027network_type\u0027: share_network[\u0027network_type\u0027],"},{"line_number":282,"context_line":"                \u0027segmentation_id\u0027: share_network[\u0027segmentation_id\u0027],"},{"line_number":283,"context_line":"                \u0027cidr\u0027: share_network[\u0027cidr\u0027],"},{"line_number":284,"context_line":"                \u0027ip_version\u0027: share_network[\u0027ip_version\u0027],"},{"line_number":285,"context_line":"            }"},{"line_number":286,"context_line":"            allocations.append("},{"line_number":287,"context_line":"                self.db.network_allocation_create(context, data))"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_6fe3d4a4","line":284,"range":{"start_line":281,"start_character":32,"end_line":284,"end_character":58},"updated":"2016-02-17 16:54:48.000000000","message":"this wouldn\u0027t be true since the db would blow up if a share_network_id wasn\u0027t able to match a share_network.. but still...\n\nLine 271 sets share_network to {} if None. Please use .get() to enhance readability.","commit_id":"e8e8adc2beee8874c1c6b996a99e2c9413e1b7c1"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"56222d7b5497cbdfd70692962fa03b93991ab432","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                \u0027ip_address\u0027: ip_address,"},{"line_number":279,"context_line":"                \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":280,"context_line":"                \u0027label\u0027: self.label,"},{"line_number":281,"context_line":"                \u0027network_type\u0027: share_network[\u0027network_type\u0027],"},{"line_number":282,"context_line":"                \u0027segmentation_id\u0027: share_network[\u0027segmentation_id\u0027],"},{"line_number":283,"context_line":"                \u0027cidr\u0027: share_network[\u0027cidr\u0027],"},{"line_number":284,"context_line":"                \u0027ip_version\u0027: share_network[\u0027ip_version\u0027],"},{"line_number":285,"context_line":"            }"},{"line_number":286,"context_line":"            allocations.append("},{"line_number":287,"context_line":"                self.db.network_allocation_create(context, data))"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_2ae6da14","line":284,"range":{"start_line":281,"start_character":32,"end_line":284,"end_character":58},"in_reply_to":"dae33548_6fe3d4a4","updated":"2016-02-17 16:57:26.000000000","message":"This info is set on lines 248-253 and not expected from DB at all. So, everything is correct here. And never will blow up. No nit.","commit_id":"e8e8adc2beee8874c1c6b996a99e2c9413e1b7c1"}],"manila/share/driver.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        raise NotImplementedError()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def get_admin_network_allocations_number(self):"},{"line_number":661,"context_line":"        return 0"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def allocate_network(self, context, share_server, share_network,"},{"line_number":664,"context_line":"                         count\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_41f1cd94","line":661,"range":{"start_line":661,"start_character":15,"end_line":661,"end_character":16},"updated":"2016-01-16 03:55:08.000000000","message":"We should move this to constants as ADMIN_NETWORK_ALLOCATIONS_NUMBER","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"116fa13c0d7664a9e14d0ed7db6a42f8fd200465","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        raise NotImplementedError()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def get_admin_network_allocations_number(self):"},{"line_number":661,"context_line":"        return 0"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def allocate_network(self, context, share_server, share_network,"},{"line_number":664,"context_line":"                         count\u003dNone, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_bf739414","line":661,"range":{"start_line":661,"start_character":15,"end_line":661,"end_character":16},"in_reply_to":"da6ed579_41f1cd94","updated":"2016-01-22 10:30:00.000000000","message":"Why is that? It is driver interface and \"zero\u0027 will be always here.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        \"\"\"Allocate admin network resources using given network information.\"\"\""},{"line_number":676,"context_line":"        if count is None:"},{"line_number":677,"context_line":"            count \u003d self.get_admin_network_allocations_number()"},{"line_number":678,"context_line":"        if count and not self.admin_network_api:"},{"line_number":679,"context_line":"            msg \u003d _(\"Admin network plugin is not set up.\")"},{"line_number":680,"context_line":"            raise exception.NetworkBadConfigurationException(reason\u003dmsg)"},{"line_number":681,"context_line":"        elif count:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_774a9329","line":678,"range":{"start_line":678,"start_character":11,"end_line":678,"end_character":16},"updated":"2016-01-16 03:55:08.000000000","message":"unless False is an acceptable value, count will always have some value that\u0027s not None after evaluating line 676(-677), so this should be:\n\n    if self.admin_network_api is None:","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"116fa13c0d7664a9e14d0ed7db6a42f8fd200465","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        \"\"\"Allocate admin network resources using given network information.\"\"\""},{"line_number":676,"context_line":"        if count is None:"},{"line_number":677,"context_line":"            count \u003d self.get_admin_network_allocations_number()"},{"line_number":678,"context_line":"        if count and not self.admin_network_api:"},{"line_number":679,"context_line":"            msg \u003d _(\"Admin network plugin is not set up.\")"},{"line_number":680,"context_line":"            raise exception.NetworkBadConfigurationException(reason\u003dmsg)"},{"line_number":681,"context_line":"        elif count:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_5feff886","line":678,"range":{"start_line":678,"start_character":11,"end_line":678,"end_character":16},"in_reply_to":"da6ed579_774a9329","updated":"2016-01-22 10:30:00.000000000","message":"\"zero\" is analog of False. Default value is exactly \"zero\". So, everything correct here. We do not need admin network API if we are not going to use it and fail if we are.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":678,"context_line":"        if count and not self.admin_network_api:"},{"line_number":679,"context_line":"            msg \u003d _(\"Admin network plugin is not set up.\")"},{"line_number":680,"context_line":"            raise exception.NetworkBadConfigurationException(reason\u003dmsg)"},{"line_number":681,"context_line":"        elif count:"},{"line_number":682,"context_line":"            kwargs.update(count\u003dcount)"},{"line_number":683,"context_line":"            self.admin_network_api.allocate_network("},{"line_number":684,"context_line":"                context, share_server, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_fcce68b6","line":681,"range":{"start_line":681,"start_character":8,"end_line":681,"end_character":19},"updated":"2016-01-16 03:55:08.000000000","message":"will always be true if it reaches this line.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"116fa13c0d7664a9e14d0ed7db6a42f8fd200465","unresolved":false,"context_lines":[{"line_number":678,"context_line":"        if count and not self.admin_network_api:"},{"line_number":679,"context_line":"            msg \u003d _(\"Admin network plugin is not set up.\")"},{"line_number":680,"context_line":"            raise exception.NetworkBadConfigurationException(reason\u003dmsg)"},{"line_number":681,"context_line":"        elif count:"},{"line_number":682,"context_line":"            kwargs.update(count\u003dcount)"},{"line_number":683,"context_line":"            self.admin_network_api.allocate_network("},{"line_number":684,"context_line":"                context, share_server, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_1fa0a042","line":681,"range":{"start_line":681,"start_character":8,"end_line":681,"end_character":19},"in_reply_to":"da6ed579_fcce68b6","updated":"2016-01-22 10:30:00.000000000","message":"False statement because of false proposal above.\n\nWe get here when \"self.admin_network_api\" is set up. And now read value of \"count\". So, it depends on \"count\" explicitly and it is not \"True\" always.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"}],"manila/share/manager.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"17cfc68b1017560520d2f3de49859491e8372238","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        admin_network_allocations \u003d ("},{"line_number":1566,"context_line":"            self.db.network_allocations_get_for_share_server("},{"line_number":1567,"context_line":"                context, share_server[\u0027id\u0027], label\u003d\u0027admin\u0027))"},{"line_number":1568,"context_line":"        network_info \u003d {"},{"line_number":1569,"context_line":"            \u0027server_id\u0027: share_server[\u0027id\u0027],"},{"line_number":1570,"context_line":"            \u0027segmentation_id\u0027: share_network[\u0027segmentation_id\u0027],"},{"line_number":1571,"context_line":"            \u0027cidr\u0027: share_network[\u0027cidr\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a54edaf_436d6631","line":1568,"range":{"start_line":1568,"start_character":8,"end_line":1568,"end_character":20},"updated":"2016-02-13 02:11:48.000000000","message":"It doesn\u0027t make sense to include admin_network_allocations in this structure.  Most fields in network_info, such as the network IDs, the segmentation ID, etc. apply to network_allocations.  In the proposed code, the admin network cannot be on its own VLAN, which seems like a requirement.  I suggest a separate method to wrap up all the admin network info, which is passed into the driver like:\n\n    server_info \u003d self.driver.setup_server(network_info,\n        metadata\u003dmetadata, admin_network_info\u003dadmin_network_info)","commit_id":"a4e3f6a113b1414a3fd9860bbc065cd27497e46e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"54b02dae637606821846be976314369053d6cce4","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        admin_network_allocations \u003d ("},{"line_number":1566,"context_line":"            self.db.network_allocations_get_for_share_server("},{"line_number":1567,"context_line":"                context, share_server[\u0027id\u0027], label\u003d\u0027admin\u0027))"},{"line_number":1568,"context_line":"        network_info \u003d {"},{"line_number":1569,"context_line":"            \u0027server_id\u0027: share_server[\u0027id\u0027],"},{"line_number":1570,"context_line":"            \u0027segmentation_id\u0027: share_network[\u0027segmentation_id\u0027],"},{"line_number":1571,"context_line":"            \u0027cidr\u0027: share_network[\u0027cidr\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a54edaf_d2d27a34","line":1568,"range":{"start_line":1568,"start_character":8,"end_line":1568,"end_character":20},"in_reply_to":"1a54edaf_436d6631","updated":"2016-02-13 08:27:35.000000000","message":"It makes sense to include it for following reason:\n\nwe either enable it or disable for each specific driver. It either requires/supports admin networks in addition to user ones or not.\n\nThen, \n\nClinton, just look at changes of, for example, Neutron network plugins at [1]. You will see, that network data using \"admin\" label is taken from configs and ignored via interfaces.\n\nAdmin network is going to be the only one. And design means we allow to use for it 3 of 5 existing network plugins - those who can setup static network data.\n\nAlso, your proposal is impossible, because in that case we would need update of share-network API for keeping more than one set of network data.\n\n\n\nhttps://review.openstack.org/#/c/260021/11/manila/network/neutron/neutron_network_plugin.py","commit_id":"a4e3f6a113b1414a3fd9860bbc065cd27497e46e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"295f5e246bb28b9916a33acb82795fb5796f5698","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        admin_network_allocations \u003d ("},{"line_number":1566,"context_line":"            self.db.network_allocations_get_for_share_server("},{"line_number":1567,"context_line":"                context, share_server[\u0027id\u0027], label\u003d\u0027admin\u0027))"},{"line_number":1568,"context_line":"        network_info \u003d {"},{"line_number":1569,"context_line":"            \u0027server_id\u0027: share_server[\u0027id\u0027],"},{"line_number":1570,"context_line":"            \u0027segmentation_id\u0027: share_network[\u0027segmentation_id\u0027],"},{"line_number":1571,"context_line":"            \u0027cidr\u0027: share_network[\u0027cidr\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_44ddc06f","line":1568,"range":{"start_line":1568,"start_character":8,"end_line":1568,"end_character":20},"in_reply_to":"1a54edaf_ac6d22ce","updated":"2016-02-13 21:17:31.000000000","message":"Just checked, segmentation ID is absent in Network Allocations models. But I would expect it there as well as IP address. So, I will update this commit extending \"network_allocation\" model adding there two new attrs - \"segmentation_id\" and \"network_type\".\n\nThank you, CLinton, for finding this bug.","commit_id":"a4e3f6a113b1414a3fd9860bbc065cd27497e46e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"ed53d16546258a58f7035608584300be4c169f77","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        admin_network_allocations \u003d ("},{"line_number":1566,"context_line":"            self.db.network_allocations_get_for_share_server("},{"line_number":1567,"context_line":"                context, share_server[\u0027id\u0027], label\u003d\u0027admin\u0027))"},{"line_number":1568,"context_line":"        network_info \u003d {"},{"line_number":1569,"context_line":"            \u0027server_id\u0027: share_server[\u0027id\u0027],"},{"line_number":1570,"context_line":"            \u0027segmentation_id\u0027: share_network[\u0027segmentation_id\u0027],"},{"line_number":1571,"context_line":"            \u0027cidr\u0027: share_network[\u0027cidr\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a54edaf_ac6d22ce","line":1568,"range":{"start_line":1568,"start_character":8,"end_line":1568,"end_character":20},"in_reply_to":"1a54edaf_d2d27a34","updated":"2016-02-13 14:24:17.000000000","message":"Regarding the static network data, I assumed as much; I got this far using the NeutronSingleNetworkPlugin for the admin network.  The admin network I set up used a different VLAN from the data network, but this network_info structure only has the segmentation ID for the data network.  How will I know the needed admin network details when it gets down into the driver?","commit_id":"a4e3f6a113b1414a3fd9860bbc065cd27497e46e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"06af678fb191d6d1c467d7ac974719ee114b05f9","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        admin_network_allocations \u003d ("},{"line_number":1566,"context_line":"            self.db.network_allocations_get_for_share_server("},{"line_number":1567,"context_line":"                context, share_server[\u0027id\u0027], label\u003d\u0027admin\u0027))"},{"line_number":1568,"context_line":"        network_info \u003d {"},{"line_number":1569,"context_line":"            \u0027server_id\u0027: share_server[\u0027id\u0027],"},{"line_number":1570,"context_line":"            \u0027segmentation_id\u0027: share_network[\u0027segmentation_id\u0027],"},{"line_number":1571,"context_line":"            \u0027cidr\u0027: share_network[\u0027cidr\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"dae33548_83ce30b2","line":1568,"range":{"start_line":1568,"start_character":8,"end_line":1568,"end_character":20},"in_reply_to":"dae33548_44ddc06f","updated":"2016-02-16 18:52:33.000000000","message":"Done. Available as attr of \"network_allocations\" model.","commit_id":"a4e3f6a113b1414a3fd9860bbc065cd27497e46e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"2c4d1b64bcc22631b1039c60629e7af32ac63904","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        admin_network_allocations \u003d ("},{"line_number":1566,"context_line":"            self.db.network_allocations_get_for_share_server("},{"line_number":1567,"context_line":"                context, share_server[\u0027id\u0027], label\u003d\u0027admin\u0027))"},{"line_number":1568,"context_line":"        # NOTE(vponomaryov): following network_info fields are deprecated:"},{"line_number":1569,"context_line":"        # \u0027segmentation_id\u0027, \u0027cidr\u0027 and \u0027network_type\u0027."},{"line_number":1570,"context_line":"        # And they should be used from network allocations directly."},{"line_number":1571,"context_line":"        # They should be removed right after no one uses them."}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_00c7a064","line":1568,"range":{"start_line":1568,"start_character":29,"end_line":1568,"end_character":73},"updated":"2016-02-17 05:23:44.000000000","message":"For share servers created prior to this patch, will the deprecated values be present in the network allocation objects?  If not, does it matter since the share server already exists and the deprecated values are only used by drivers when creating share servers?","commit_id":"e8e8adc2beee8874c1c6b996a99e2c9413e1b7c1"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6f4dadd24bc113dc81b627b3665c225448448e5f","unresolved":false,"context_lines":[{"line_number":1565,"context_line":"        admin_network_allocations \u003d ("},{"line_number":1566,"context_line":"            self.db.network_allocations_get_for_share_server("},{"line_number":1567,"context_line":"                context, share_server[\u0027id\u0027], label\u003d\u0027admin\u0027))"},{"line_number":1568,"context_line":"        # NOTE(vponomaryov): following network_info fields are deprecated:"},{"line_number":1569,"context_line":"        # \u0027segmentation_id\u0027, \u0027cidr\u0027 and \u0027network_type\u0027."},{"line_number":1570,"context_line":"        # And they should be used from network allocations directly."},{"line_number":1571,"context_line":"        # They should be removed right after no one uses them."}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_1ff89548","line":1568,"range":{"start_line":1568,"start_character":29,"end_line":1568,"end_character":73},"in_reply_to":"dae33548_00c7a064","updated":"2016-02-17 09:47:17.000000000","message":"1) \"For share servers created prior to this patch, will the deprecated values be present in the network allocation objects?\" - No\n\n2) \"If not, does it matter since the share server already exists \" - No, does not matter. Useful exactly for creation of share server.\n\n3) \"and the deprecated values are only used by drivers when creating share servers\" - yes.","commit_id":"e8e8adc2beee8874c1c6b996a99e2c9413e1b7c1"}],"manila/tests/db/migrations/alembic/migrations_data_checks.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"226fe8e82b87025a5d39dce6331e84dd125d5d6b","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def check_downgrade(self, engine):"},{"line_number":321,"context_line":"        na_table \u003d utils.load_table(self.table_name, engine)"},{"line_number":322,"context_line":"        for na in engine.execute(na_table.select()):"},{"line_number":323,"context_line":"            self.test_case.assertFalse(hasattr(na, \u0027label\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_69ee218d","line":323,"range":{"start_line":322,"start_character":8,"end_line":323,"end_character":60},"updated":"2016-02-03 13:45:39.000000000","message":"shouldn\u0027t you ensure that the data (all three network allocations) you inserted in the upgrade/setup are still in the DB:\n\nbecause, this loop may not run if there\u0027s no data in the table","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f895e3a4adb979111c58e52674f90d05773780d4","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def check_downgrade(self, engine):"},{"line_number":321,"context_line":"        na_table \u003d utils.load_table(self.table_name, engine)"},{"line_number":322,"context_line":"        for na in engine.execute(na_table.select()):"},{"line_number":323,"context_line":"            self.test_case.assertFalse(hasattr(na, \u0027label\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_c34b6e58","line":323,"range":{"start_line":322,"start_character":8,"end_line":323,"end_character":60},"in_reply_to":"5a5ae5dd_69ee218d","updated":"2016-02-03 15:21:32.000000000","message":"Done","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5eac46a027a89cfe1b1120fc87d5516d6cb82df6","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    def check_downgrade(self, engine):"},{"line_number":321,"context_line":"        na_table \u003d utils.load_table(self.table_name, engine)"},{"line_number":322,"context_line":"        db_result \u003d engine.execute(na_table.select())"},{"line_number":323,"context_line":"        self.test_case.assertEqual(3, db_result.rowcount)"},{"line_number":324,"context_line":"        for na in db_result:"},{"line_number":325,"context_line":"            self.test_case.assertFalse(hasattr(na, \u0027label\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_ab371baf","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":57},"updated":"2016-02-03 23:23:46.000000000","message":"The problem with this is is someone adds another migration or edits a previous migration, this kind of test is pretty flaky. I had this happen with migration data check here:\n\nhttps://review.openstack.org/#/c/238572/26/manila/tests/db/migrations/alembic/migrations_data_checks.py\n\nSo i rewrote the tests to look for the IDs of the resources I specifically inserted at setup.","commit_id":"5cb6df83654ca639f2d84b3cb0b516ec95422dd3"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4186bdcb7a3e97918e2bf7d85f54419dc8accb2a","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    def check_downgrade(self, engine):"},{"line_number":321,"context_line":"        na_table \u003d utils.load_table(self.table_name, engine)"},{"line_number":322,"context_line":"        db_result \u003d engine.execute(na_table.select())"},{"line_number":323,"context_line":"        self.test_case.assertEqual(3, db_result.rowcount)"},{"line_number":324,"context_line":"        for na in db_result:"},{"line_number":325,"context_line":"            self.test_case.assertFalse(hasattr(na, \u0027label\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_80b3674c","line":323,"range":{"start_line":323,"start_character":8,"end_line":323,"end_character":57},"in_reply_to":"5a5ae5dd_ab371baf","updated":"2016-02-08 15:37:48.000000000","message":"Done","commit_id":"5cb6df83654ca639f2d84b3cb0b516ec95422dd3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e7a60cd7e2bd0e54066d1f7bf3f62a3358e86f9c","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def check_downgrade(self, engine):"},{"line_number":420,"context_line":"        na_table \u003d utils.load_table(self.table_name, engine)"},{"line_number":421,"context_line":"        db_result \u003d engine.execute(na_table.select())"},{"line_number":422,"context_line":"        self.test_case.assertEqual(len(self.ids), db_result.rowcount)"},{"line_number":423,"context_line":"        for na in db_result:"},{"line_number":424,"context_line":"            self.test_case.assertFalse(hasattr(na, \u0027label\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a57f1b5_3d7db51c","line":422,"range":{"start_line":422,"start_character":35,"end_line":422,"end_character":68},"updated":"2016-02-10 13:57:02.000000000","message":"Sorry if i wasn\u0027t clear; I meant, you should\n\n      ids_in_table \u003d [na[\u0027id\u0027] for na in db_result]\n      for id in self.ids: \n          self.test_case.assertIn(id, ids_in_table)\n\n\nor something to that effect.. because:\n\nif there\u0027s a migration check added for a previous migration, this is an inconsistent check.. because tables are not flushed between each migration check; even if we setup data within each migration check.","commit_id":"c3d00fa52579559e2025bfc835f57bf98d07fb4a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7662e09c7c93837034d41d9581f971f806306f48","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def check_downgrade(self, engine):"},{"line_number":420,"context_line":"        na_table \u003d utils.load_table(self.table_name, engine)"},{"line_number":421,"context_line":"        db_result \u003d engine.execute(na_table.select())"},{"line_number":422,"context_line":"        self.test_case.assertEqual(len(self.ids), db_result.rowcount)"},{"line_number":423,"context_line":"        for na in db_result:"},{"line_number":424,"context_line":"            self.test_case.assertFalse(hasattr(na, \u0027label\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a57f1b5_b3de9f6b","line":422,"range":{"start_line":422,"start_character":35,"end_line":422,"end_character":68},"in_reply_to":"3a57f1b5_3d7db51c","updated":"2016-02-10 20:13:54.000000000","message":"Done","commit_id":"c3d00fa52579559e2025bfc835f57bf98d07fb4a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d5b00f2a5a850db2f2b62530ec3b5bb0393013e6","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def check_downgrade(self, engine):"},{"line_number":420,"context_line":"        na_table \u003d utils.load_table(self.table_name, engine)"},{"line_number":421,"context_line":"        db_result \u003d engine.execute(na_table.select())"},{"line_number":422,"context_line":"        self.test_case.assertTrue(db_result.rowcount \u003e\u003d len(self.ids))"},{"line_number":423,"context_line":"        for na in db_result:"},{"line_number":424,"context_line":"            self.test_case.assertFalse(hasattr(na, \u0027label\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a57f1b5_f3265767","line":422,"range":{"start_line":422,"start_character":56,"end_line":422,"end_character":69},"updated":"2016-02-10 20:16:30.000000000","message":"oh yeah, that works.","commit_id":"f845ef5760f1488859bf222b5a6633f219f94611"}],"manila/tests/db/sqlalchemy/test_api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":1652,"context_line":"        self.ctxt \u003d context.RequestContext("},{"line_number":1653,"context_line":"            user_id\u003dself.user_id, project_id\u003dself.project_id, is_admin\u003dTrue)"},{"line_number":1654,"context_line":"        self.user_network_allocations \u003d ["},{"line_number":1655,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"},{"line_number":1656,"context_line":"             \u0027ip_address\u0027: \u00271.1.1.1\u0027,"},{"line_number":1657,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":1658,"context_line":"             \u0027label\u0027: None},"},{"line_number":1659,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"},{"line_number":1660,"context_line":"             \u0027ip_address\u0027: \u00272.2.2.2\u0027,"},{"line_number":1661,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_57ff4faa","line":1658,"range":{"start_line":1655,"start_character":12,"end_line":1658,"end_character":28},"updated":"2016-01-16 03:55:08.000000000","message":"please update to dictionary wrapping that you have on lines 1677, 1685, etc.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"116fa13c0d7664a9e14d0ed7db6a42f8fd200465","unresolved":false,"context_lines":[{"line_number":1652,"context_line":"        self.ctxt \u003d context.RequestContext("},{"line_number":1653,"context_line":"            user_id\u003dself.user_id, project_id\u003dself.project_id, is_admin\u003dTrue)"},{"line_number":1654,"context_line":"        self.user_network_allocations \u003d ["},{"line_number":1655,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"},{"line_number":1656,"context_line":"             \u0027ip_address\u0027: \u00271.1.1.1\u0027,"},{"line_number":1657,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":1658,"context_line":"             \u0027label\u0027: None},"},{"line_number":1659,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"},{"line_number":1660,"context_line":"             \u0027ip_address\u0027: \u00272.2.2.2\u0027,"},{"line_number":1661,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a68dd71_3ab812e5","line":1658,"range":{"start_line":1655,"start_character":12,"end_line":1658,"end_character":28},"in_reply_to":"da6ed579_57ff4faa","updated":"2016-01-22 10:30:00.000000000","message":"Your proposal is not clear at all.\n\nLine 1677 is used for creation of \"share_network\" and 1685 for creation of \"share_server\". Here we have \"network_allocations\" that is different thing.","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":1656,"context_line":"             \u0027ip_address\u0027: \u00271.1.1.1\u0027,"},{"line_number":1657,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":1658,"context_line":"             \u0027label\u0027: None},"},{"line_number":1659,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"},{"line_number":1660,"context_line":"             \u0027ip_address\u0027: \u00272.2.2.2\u0027,"},{"line_number":1661,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":1662,"context_line":"             \u0027label\u0027: \u0027user\u0027},"},{"line_number":1663,"context_line":"        ]"},{"line_number":1664,"context_line":"        self.admin_network_allocations \u003d ["},{"line_number":1665,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_1730f79d","line":1662,"range":{"start_line":1659,"start_character":12,"end_line":1662,"end_character":30},"updated":"2016-01-16 03:55:08.000000000","message":"same here","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"aafb524fc0bb0a71d7b69470d3bb929b585397ef","unresolved":false,"context_lines":[{"line_number":1662,"context_line":"             \u0027label\u0027: \u0027user\u0027},"},{"line_number":1663,"context_line":"        ]"},{"line_number":1664,"context_line":"        self.admin_network_allocations \u003d ["},{"line_number":1665,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"},{"line_number":1666,"context_line":"             \u0027ip_address\u0027: \u00273.3.3.3\u0027,"},{"line_number":1667,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":1668,"context_line":"             \u0027label\u0027: \u0027admin\u0027},"},{"line_number":1669,"context_line":"            {\u0027share_server_id\u0027: self.share_server_id,"},{"line_number":1670,"context_line":"             \u0027ip_address\u0027: \u00274.4.4.4\u0027,"},{"line_number":1671,"context_line":"             \u0027status\u0027: constants.STATUS_ACTIVE,"},{"line_number":1672,"context_line":"             \u0027label\u0027: \u0027admin\u0027},"},{"line_number":1673,"context_line":"        ]"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"    def _setup_network_allocations_get_for_share_server(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_771ff309","line":1672,"range":{"start_line":1665,"start_character":12,"end_line":1672,"end_character":31},"updated":"2016-01-16 03:55:08.000000000","message":"and here","commit_id":"f5c1e78e0d9ff5479505601d14ccc259227c333d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"226fe8e82b87025a5d39dce6331e84dd125d5d6b","unresolved":false,"context_lines":[{"line_number":1705,"context_line":""},{"line_number":1706,"context_line":"        result \u003d db_api.network_allocations_get_for_share_server("},{"line_number":1707,"context_line":"            self.ctxt, self.share_server_id, label\u003d\u0027user\u0027)"},{"line_number":1708,"context_line":"        self.assertEqual("},{"line_number":1709,"context_line":"            len(self.user_network_allocations), len(result))"},{"line_number":1710,"context_line":"        for na in result:"},{"line_number":1711,"context_line":"            self.assertIn(na.label, (None, \u0027user\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_c97e35ae","line":1708,"range":{"start_line":1708,"start_character":8,"end_line":1708,"end_character":12},"updated":"2016-02-03 13:45:39.000000000","message":"on your next patch, please add an empty line between the method calls and the asserts in this and all tests below..","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f895e3a4adb979111c58e52674f90d05773780d4","unresolved":false,"context_lines":[{"line_number":1705,"context_line":""},{"line_number":1706,"context_line":"        result \u003d db_api.network_allocations_get_for_share_server("},{"line_number":1707,"context_line":"            self.ctxt, self.share_server_id, label\u003d\u0027user\u0027)"},{"line_number":1708,"context_line":"        self.assertEqual("},{"line_number":1709,"context_line":"            len(self.user_network_allocations), len(result))"},{"line_number":1710,"context_line":"        for na in result:"},{"line_number":1711,"context_line":"            self.assertIn(na.label, (None, \u0027user\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_839b36c9","line":1708,"range":{"start_line":1708,"start_character":8,"end_line":1708,"end_character":12},"in_reply_to":"5a5ae5dd_c97e35ae","updated":"2016-02-03 15:21:32.000000000","message":"Done","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"}],"manila/tests/share/test_driver.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"226fe8e82b87025a5d39dce6331e84dd125d5d6b","unresolved":false,"context_lines":[{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        share_driver.allocate_admin_network(ctxt, share_server)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        share_driver.get_admin_network_allocations_number.\\"},{"line_number":403,"context_line":"            assert_called_once_with()"},{"line_number":404,"context_line":"        self.assertFalse("},{"line_number":405,"context_line":"            share_driver.admin_network_api.allocate_network.called)"},{"line_number":406,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_891d9d75","line":403,"range":{"start_line":402,"start_character":8,"end_line":403,"end_character":37},"updated":"2016-02-03 13:45:39.000000000","message":"wrap with parentheses instead..","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f895e3a4adb979111c58e52674f90d05773780d4","unresolved":false,"context_lines":[{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        share_driver.allocate_admin_network(ctxt, share_server)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        share_driver.get_admin_network_allocations_number.\\"},{"line_number":403,"context_line":"            assert_called_once_with()"},{"line_number":404,"context_line":"        self.assertFalse("},{"line_number":405,"context_line":"            share_driver.admin_network_api.allocate_network.called)"},{"line_number":406,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_83d01655","line":403,"range":{"start_line":402,"start_character":8,"end_line":403,"end_character":37},"in_reply_to":"5a5ae5dd_891d9d75","updated":"2016-02-03 15:21:32.000000000","message":"Done","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"226fe8e82b87025a5d39dce6331e84dd125d5d6b","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        share_driver.allocate_admin_network(ctxt, share_server)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        share_driver.get_admin_network_allocations_number.\\"},{"line_number":443,"context_line":"            assert_called_once_with()"},{"line_number":444,"context_line":"        share_driver.admin_network_api.allocate_network.\\"},{"line_number":445,"context_line":"            assert_called_once_with(ctxt, share_server, count\u003d1)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    def test_allocate_admin_network_count_1_api_not_initialized(self):"},{"line_number":448,"context_line":"        share_driver \u003d self._instantiate_share_driver(None, True, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_6cff0f02","line":445,"range":{"start_line":442,"start_character":8,"end_line":445,"end_character":64},"updated":"2016-02-03 13:45:39.000000000","message":"same here","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f895e3a4adb979111c58e52674f90d05773780d4","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        share_driver.allocate_admin_network(ctxt, share_server)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        share_driver.get_admin_network_allocations_number.\\"},{"line_number":443,"context_line":"            assert_called_once_with()"},{"line_number":444,"context_line":"        share_driver.admin_network_api.allocate_network.\\"},{"line_number":445,"context_line":"            assert_called_once_with(ctxt, share_server, count\u003d1)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    def test_allocate_admin_network_count_1_api_not_initialized(self):"},{"line_number":448,"context_line":"        share_driver \u003d self._instantiate_share_driver(None, True, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_63cf1ab1","line":445,"range":{"start_line":442,"start_character":8,"end_line":445,"end_character":64},"in_reply_to":"5a5ae5dd_6cff0f02","updated":"2016-02-03 15:21:32.000000000","message":"Done","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"226fe8e82b87025a5d39dce6331e84dd125d5d6b","unresolved":false,"context_lines":[{"line_number":459,"context_line":"            share_driver.allocate_admin_network,"},{"line_number":460,"context_line":"            ctxt, share_server,"},{"line_number":461,"context_line":"        )"},{"line_number":462,"context_line":"        share_driver.get_admin_network_allocations_number.\\"},{"line_number":463,"context_line":"            assert_called_once_with()"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def test_migrate_share(self):"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_cc1ac36e","line":463,"range":{"start_line":462,"start_character":8,"end_line":463,"end_character":37},"updated":"2016-02-03 13:45:39.000000000","message":"and here","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f895e3a4adb979111c58e52674f90d05773780d4","unresolved":false,"context_lines":[{"line_number":459,"context_line":"            share_driver.allocate_admin_network,"},{"line_number":460,"context_line":"            ctxt, share_server,"},{"line_number":461,"context_line":"        )"},{"line_number":462,"context_line":"        share_driver.get_admin_network_allocations_number.\\"},{"line_number":463,"context_line":"            assert_called_once_with()"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def test_migrate_share(self):"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_a363d2b0","line":463,"range":{"start_line":462,"start_character":8,"end_line":463,"end_character":37},"in_reply_to":"5a5ae5dd_cc1ac36e","updated":"2016-02-03 15:21:32.000000000","message":"Done","commit_id":"f2502112cb496c3510607f427feb4891d886a54b"}]}
