)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"e916410c5d5d1dd94356f206bbf9812979862b7f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix router integration tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The aim of this PS is to fix router integration tests"},{"line_number":10,"context_line":"listed below:"},{"line_number":11,"context_line":"  - test_router_add_delete_interface (Partial-Bug: #1792028)"},{"line_number":12,"context_line":"  - test_router_delete_interface_by_row (Partial-Bug: #1792028)"},{"line_number":13,"context_line":"  - test_router_overview_data (Partial-Bug: #1792028)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_4cce885a","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":13},"updated":"2019-09-30 12:46:02.000000000","message":"NIT: can you explain the fix","commit_id":"1085a6c94104200cbae1a4425334c81650dbf5b0"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"51fe1873ac5706434cf4f3b64f5bf2a8a133967e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix router integration tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The aim of this PS is to fix router integration tests"},{"line_number":10,"context_line":"listed below:"},{"line_number":11,"context_line":"  - test_router_add_delete_interface (Partial-Bug: #1792028)"},{"line_number":12,"context_line":"  - test_router_delete_interface_by_row (Partial-Bug: #1792028)"},{"line_number":13,"context_line":"  - test_router_overview_data (Partial-Bug: #1792028)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_7501c469","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":13},"in_reply_to":"3fa7e38b_4cce885a","updated":"2019-09-30 14:34:53.000000000","message":"Done","commit_id":"1085a6c94104200cbae1a4425334c81650dbf5b0"}],"openstack_dashboard/test/integration_tests/pages/project/network/routerinterfacespage.py":[{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"d48b1fe9631fe5eb51cfdb94f533b87d2c792660","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    INTERFACES_TABLE_STATUS_COLUMN \u003d \u0027Status\u0027"},{"line_number":46,"context_line":"    INTERFACES_TABLE_NAME_COLUMN \u003d \u0027Name\u0027"},{"line_number":47,"context_line":"    INTERFACES_TABLE_FIXED_IPS_COLUMN \u003d \u0027Fixed IPs\u0027"},{"line_number":48,"context_line":"    DEFAULT_IPv4_ADDRESS \u003d \u002710.100.0.1\u0027"},{"line_number":49,"context_line":"    _interface_subnet_selector \u003d (by.By.CSS_SELECTOR, \u0027div \u003e .themable-select\u0027)"},{"line_number":50,"context_line":"    _breadcrumb_routers_locator \u003d ("},{"line_number":51,"context_line":"        by.By.CSS_SELECTOR,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_442d11a6","line":48,"range":{"start_line":48,"start_character":31,"end_line":48,"end_character":34},"updated":"2019-09-27 18:50:28.000000000","message":"intentional?","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    INTERFACES_TABLE_STATUS_COLUMN \u003d \u0027Status\u0027"},{"line_number":46,"context_line":"    INTERFACES_TABLE_NAME_COLUMN \u003d \u0027Name\u0027"},{"line_number":47,"context_line":"    INTERFACES_TABLE_FIXED_IPS_COLUMN \u003d \u0027Fixed IPs\u0027"},{"line_number":48,"context_line":"    DEFAULT_IPv4_ADDRESS \u003d \u002710.100.0.1\u0027"},{"line_number":49,"context_line":"    _interface_subnet_selector \u003d (by.By.CSS_SELECTOR, \u0027div \u003e .themable-select\u0027)"},{"line_number":50,"context_line":"    _breadcrumb_routers_locator \u003d ("},{"line_number":51,"context_line":"        by.By.CSS_SELECTOR,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_667b6e27","line":48,"range":{"start_line":48,"start_character":31,"end_line":48,"end_character":34},"in_reply_to":"3fa7e38b_442d11a6","updated":"2019-09-27 23:22:55.000000000","message":"yeah, matches with default network_cidr else will raise error ip doesn\u0027t belong to subnet.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"51fe1873ac5706434cf4f3b64f5bf2a8a133967e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    INTERFACES_TABLE_STATUS_COLUMN \u003d \u0027Status\u0027"},{"line_number":46,"context_line":"    INTERFACES_TABLE_NAME_COLUMN \u003d \u0027Name\u0027"},{"line_number":47,"context_line":"    INTERFACES_TABLE_FIXED_IPS_COLUMN \u003d \u0027Fixed IPs\u0027"},{"line_number":48,"context_line":"    DEFAULT_IPv4_ADDRESS \u003d \u002710.100.0.1\u0027"},{"line_number":49,"context_line":"    _interface_subnet_selector \u003d (by.By.CSS_SELECTOR, \u0027div \u003e .themable-select\u0027)"},{"line_number":50,"context_line":"    _breadcrumb_routers_locator \u003d ("},{"line_number":51,"context_line":"        by.By.CSS_SELECTOR,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_86978a3a","line":48,"range":{"start_line":48,"start_character":31,"end_line":48,"end_character":34},"in_reply_to":"3fa7e38b_442d11a6","updated":"2019-09-30 14:34:53.000000000","message":"yes, matched with subnet.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"}],"openstack_dashboard/test/integration_tests/pages/project/network/routerspage.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fb9a05ab6a9655902371cf6fdb0bbab0be59e58a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class RoutersTable(tables.TableRegion):"},{"line_number":27,"context_line":"    name \u003d \"routers\""},{"line_number":28,"context_line":"    CREATE_ROUTER_FORM_FIELDS \u003d (\"name\", \"admin_state_up\", \"external_network\")"},{"line_number":29,"context_line":"    SET_GATEWAY_FORM_FIELDS \u003d (\"network_id\", )"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @tables.bind_table_action(\u0027create\u0027)"},{"line_number":32,"context_line":"    def create_router(self, create_button):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_c2233ca6","line":29,"range":{"start_line":29,"start_character":44,"end_line":29,"end_character":45},"updated":"2019-09-27 11:09:27.000000000","message":"Looks unnecessary.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class RoutersTable(tables.TableRegion):"},{"line_number":27,"context_line":"    name \u003d \"routers\""},{"line_number":28,"context_line":"    CREATE_ROUTER_FORM_FIELDS \u003d (\"name\", \"admin_state_up\", \"external_network\")"},{"line_number":29,"context_line":"    SET_GATEWAY_FORM_FIELDS \u003d (\"network_id\", )"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @tables.bind_table_action(\u0027create\u0027)"},{"line_number":32,"context_line":"    def create_router(self, create_button):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a67f2664","line":29,"range":{"start_line":29,"start_character":44,"end_line":29,"end_character":45},"in_reply_to":"3fa7e38b_c2233ca6","updated":"2019-09-27 23:22:55.000000000","message":"Done","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"d48b1fe9631fe5eb51cfdb94f533b87d2c792660","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def create_router(self,"},{"line_number":81,"context_line":"                      name,"},{"line_number":82,"context_line":"                      admin_state_up\u003dDEFAULT_ADMIN_STATE_UP,"},{"line_number":83,"context_line":"                      external_network\u003dNone):"},{"line_number":84,"context_line":"        if external_network is None:"},{"line_number":85,"context_line":"            external_network \u003d self._external_network"},{"line_number":86,"context_line":"        create_router_form \u003d self.routers_table.create_router()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ff9da6bb","line":83,"range":{"start_line":83,"start_character":22,"end_line":83,"end_character":43},"updated":"2019-09-27 18:50:28.000000000","message":"Im pretty sure no other methods use this argument. If you are getting the value from the conf now, I think it can be safely removed from the arguments","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    def create_router(self,"},{"line_number":81,"context_line":"                      name,"},{"line_number":82,"context_line":"                      admin_state_up\u003dDEFAULT_ADMIN_STATE_UP,"},{"line_number":83,"context_line":"                      external_network\u003dNone):"},{"line_number":84,"context_line":"        if external_network is None:"},{"line_number":85,"context_line":"            external_network \u003d self._external_network"},{"line_number":86,"context_line":"        create_router_form \u003d self.routers_table.create_router()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6695ae86","line":83,"range":{"start_line":83,"start_character":22,"end_line":83,"end_character":43},"in_reply_to":"3fa7e38b_ff9da6bb","updated":"2019-09-27 23:22:55.000000000","message":"Done","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"d48b1fe9631fe5eb51cfdb94f533b87d2c792660","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        create_router_form.external_network.text \u003d external_network"},{"line_number":90,"context_line":"        create_router_form.submit()"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def set_gateway(self, router_id, network_name\u003dNone):"},{"line_number":93,"context_line":"        if network_name is None:"},{"line_number":94,"context_line":"            network_name \u003d self._external_network"},{"line_number":95,"context_line":"        row \u003d self._get_row_with_router_name(router_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7fb1b646","line":92,"range":{"start_line":92,"start_character":37,"end_line":92,"end_character":49},"updated":"2019-09-27 18:50:28.000000000","message":"ditto","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        create_router_form.external_network.text \u003d external_network"},{"line_number":90,"context_line":"        create_router_form.submit()"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def set_gateway(self, router_id, network_name\u003dNone):"},{"line_number":93,"context_line":"        if network_name is None:"},{"line_number":94,"context_line":"            network_name \u003d self._external_network"},{"line_number":95,"context_line":"        row \u003d self._get_row_with_router_name(router_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_06907a94","line":92,"range":{"start_line":92,"start_character":37,"end_line":92,"end_character":49},"in_reply_to":"3fa7e38b_7fb1b646","updated":"2019-09-27 23:22:55.000000000","message":"Done","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"d48b1fe9631fe5eb51cfdb94f533b87d2c792660","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            return False"},{"line_number":137,"context_line":"        return True"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def is_gateway_set(self, name, network_name\u003dNone):"},{"line_number":140,"context_line":"        if network_name is None:"},{"line_number":141,"context_line":"            network_name \u003d self._external_network"},{"line_number":142,"context_line":"        row \u003d self._get_row_with_router_name(name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1fa1a2f8","line":139,"range":{"start_line":139,"start_character":48,"end_line":139,"end_character":52},"updated":"2019-09-27 18:50:28.000000000","message":"ditto","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            return False"},{"line_number":137,"context_line":"        return True"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def is_gateway_set(self, name, network_name\u003dNone):"},{"line_number":140,"context_line":"        if network_name is None:"},{"line_number":141,"context_line":"            network_name \u003d self._external_network"},{"line_number":142,"context_line":"        row \u003d self._get_row_with_router_name(name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_268b3668","line":139,"range":{"start_line":139,"start_character":48,"end_line":139,"end_character":52},"in_reply_to":"3fa7e38b_1fa1a2f8","updated":"2019-09-27 23:22:55.000000000","message":"Done","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"}],"openstack_dashboard/test/integration_tests/regions/forms.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fb9a05ab6a9655902371cf6fdb0bbab0be59e58a","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                if self.strict_options_match:"},{"line_number":265,"context_line":"                    match \u003d text \u003d\u003d str(option.text.strip())"},{"line_number":266,"context_line":"                else:"},{"line_number":267,"context_line":"                    match \u003d text in str(option.text.strip())"},{"line_number":268,"context_line":"                if match:"},{"line_number":269,"context_line":"                    option.click()"},{"line_number":270,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_37061022","line":267,"updated":"2019-09-27 11:09:27.000000000","message":"What actually happens? I would like to know why this is needed.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":264,"context_line":"                if self.strict_options_match:"},{"line_number":265,"context_line":"                    match \u003d text \u003d\u003d str(option.text.strip())"},{"line_number":266,"context_line":"                else:"},{"line_number":267,"context_line":"                    match \u003d text in str(option.text.strip())"},{"line_number":268,"context_line":"                if match:"},{"line_number":269,"context_line":"                    option.click()"},{"line_number":270,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4624325e","line":267,"in_reply_to":"3fa7e38b_37061022","updated":"2019-09-27 23:22:55.000000000","message":"It is required when we create router interface with matching subnet. Subnet selector dropdownbox shows option text like \"subnetip (subnetname)\" eg: \"private: 10.0.0.0/26 (private_subnet)\" and we would like to match with subnet_name. So I\u0027ve made this condition more flexible to support contained matching text in option text. Condition used in https://review.opendev.org/#/c/685208/2/openstack_dashboard/test/integration_tests/pages/project/network/routerinterfacespage.py L89.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fb9a05ab6a9655902371cf6fdb0bbab0be59e58a","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        fields \u003d self._get_form_fields()"},{"line_number":447,"context_line":"        current_tab_mappings \u003d self.field_mappings[tab_index]"},{"line_number":448,"context_line":"        for accessor_name, accessor_expr in current_tab_mappings.items():"},{"line_number":449,"context_line":"            if accessor_expr in fields:"},{"line_number":450,"context_line":"                if isinstance(accessor_expr, six.string_types):"},{"line_number":451,"context_line":"                    self._dynamic_properties[accessor_name] \u003d fields["},{"line_number":452,"context_line":"                        accessor_expr]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_972264b8","line":449,"range":{"start_line":449,"start_character":12,"end_line":449,"end_character":39},"updated":"2019-09-27 11:09:27.000000000","message":"nit: we can skip changing the indent level by the following:\n\n  if accessor_expr not in fields:\n      continue","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        fields \u003d self._get_form_fields()"},{"line_number":447,"context_line":"        current_tab_mappings \u003d self.field_mappings[tab_index]"},{"line_number":448,"context_line":"        for accessor_name, accessor_expr in current_tab_mappings.items():"},{"line_number":449,"context_line":"            if accessor_expr in fields:"},{"line_number":450,"context_line":"                if isinstance(accessor_expr, six.string_types):"},{"line_number":451,"context_line":"                    self._dynamic_properties[accessor_name] \u003d fields["},{"line_number":452,"context_line":"                        accessor_expr]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_46df5268","line":449,"range":{"start_line":449,"start_character":12,"end_line":449,"end_character":39},"in_reply_to":"3fa7e38b_972264b8","updated":"2019-09-27 23:22:55.000000000","message":"Done. Thanks.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"}],"openstack_dashboard/test/integration_tests/tests/test_router_gateway.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fb9a05ab6a9655902371cf6fdb0bbab0be59e58a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard.test.integration_tests.regions import messages"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class TestRouters(helpers.AdminTestCase):"},{"line_number":19,"context_line":"    ROUTER_NAME \u003d helpers.gen_random_resource_name(\"router\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    @decorators.services_required(\"neutron\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1752f43b","line":18,"range":{"start_line":18,"start_character":26,"end_line":18,"end_character":39},"updated":"2019-09-27 11:09:27.000000000","message":"Why is \u0027admin-ness\u0027 needed? Looking at the docstring below, it is a user-based operation and admin-ness is unnecessary.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"4904e5ffb428f81d869efc2c7f857276f05798dd","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard.test.integration_tests.regions import messages"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class TestRouters(helpers.AdminTestCase):"},{"line_number":19,"context_line":"    ROUTER_NAME \u003d helpers.gen_random_resource_name(\"router\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    @decorators.services_required(\"neutron\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7f62160c","line":18,"range":{"start_line":18,"start_character":26,"end_line":18,"end_character":39},"in_reply_to":"3fa7e38b_1752f43b","updated":"2019-09-27 19:19:32.000000000","message":"The security on creating and deleting seems a little lax, anyone running these tests with slightly increased restrictions will run into issues. Is there a downside to making this an admin test?","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":23467,"name":"Pallav Gupta","email":"pallavgupta84@gmail.com","username":"pallav"},"change_message_id":"4e87efab98083fffdb01872c0a6b16727b61bd09","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard.test.integration_tests.regions import messages"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class TestRouters(helpers.AdminTestCase):"},{"line_number":19,"context_line":"    ROUTER_NAME \u003d helpers.gen_random_resource_name(\"router\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    @decorators.services_required(\"neutron\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_86db0a4d","line":18,"range":{"start_line":18,"start_character":26,"end_line":18,"end_character":39},"in_reply_to":"3fa7e38b_7f62160c","updated":"2019-09-27 23:22:55.000000000","message":"Sometimes member user account is more restrictive and doesn\u0027t have rights to perform create router operation. Same applied in our downstream. So in order to perform this test, I\u0027ve changed to run as Admin user. I guess, there is no harm running as admin user in order to test gateway update operation.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"66bde28efeefe81e9a93bacf2084b0c5e846dd21","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from openstack_dashboard.test.integration_tests.regions import messages"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class TestRouters(helpers.AdminTestCase):"},{"line_number":19,"context_line":"    ROUTER_NAME \u003d helpers.gen_random_resource_name(\"router\")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    @decorators.services_required(\"neutron\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_29ef3788","line":18,"range":{"start_line":18,"start_character":26,"end_line":18,"end_character":39},"in_reply_to":"3fa7e38b_86db0a4d","updated":"2019-10-04 03:17:20.000000000","message":"If so, what can we do if someone wants to test router operations with regular user rights?\n\nIMHO pages under \"Project\" dashboard should be tested with regular member role and \"panels under Admin\" dashboard should be tested with admin role. If we really need admin-ness for router tests, it should be an option.","commit_id":"b6bbf3930ac2752dc12d331f2ae1fbf432203536"}]}
