)]}'
{"tempest/common/isolated_creds.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import netaddr"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import keystoneclient.v2_0.client"},{"line_number":20,"context_line":"import neutronclient.v2_0.client"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest import clients"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2Bg%3D","line":19,"updated":"2013-09-08 21:51:02.000000000","message":"I think adding an \u0027as keystoneclient\u0027 will make the formatting below easier…","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import netaddr"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import keystoneclient.v2_0.client"},{"line_number":20,"context_line":"import neutronclient.v2_0.client"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from tempest import clients"},{"line_number":23,"context_line":"from tempest.common.utils.data_utils import rand_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2Bc%3D","line":20,"updated":"2013-09-08 21:51:02.000000000","message":"add an \u0027as neutronclient\u0027 to make the formatting simpler below in _get_official_admin_clients()","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                              tenant_name\u003dtenant_name,"},{"line_number":55,"context_line":"                                              auth_url\u003dauth_url,"},{"line_number":56,"context_line":"                                              insecure\u003ddscv))"},{"line_number":57,"context_line":"        network_client \u003d ("},{"line_number":58,"context_line":"            neutronclient.v2_0.client.Client(username\u003dusername,"},{"line_number":59,"context_line":"                                             password\u003dpassword,"},{"line_number":60,"context_line":"                                             tenant_name\u003dtenant_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2BY%3D","line":57,"updated":"2013-09-08 21:51:02.000000000","message":"Instead of doing the double paren here why not just alias the import above?","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        rand_name_root \u003d rand_name(self.name)"},{"line_number":197,"context_line":"        network_name \u003d rand_name_root + \"-network\""},{"line_number":198,"context_line":"        network \u003d self._create_network(network_name, tenant_id)"},{"line_number":199,"context_line":"        rand_name_root \u003d rand_name(self.name)"},{"line_number":200,"context_line":"        subnet_name \u003d rand_name_root + \"-subnet\""},{"line_number":201,"context_line":"        subnet \u003d self._create_subnet(subnet_name, tenant_id, network[\u0027id\u0027])"},{"line_number":202,"context_line":"        rand_name_root \u003d rand_name(self.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2BU%3D","line":199,"updated":"2013-09-08 21:51:02.000000000","message":"You only should generate a random root once for a network. That way the names are consistent in the logs. Otherwise it makes it more difficult to associate which network, subnet, and router were created together for the same tenant.","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    def get_admin_user(self):"},{"line_number":273,"context_line":"        return self.isolated_creds.get(\u0027admin\u0027)[0]"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def get_primary_creds(self, create_net\u003dTrue):"},{"line_number":276,"context_line":"        if self.isolated_creds.get(\u0027primary\u0027):"},{"line_number":277,"context_line":"            user, tenant \u003d self.isolated_creds[\u0027primary\u0027]"},{"line_number":278,"context_line":"            username, tenant_name \u003d self._get_cred_names(user, tenant)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2BQ%3D","line":275,"updated":"2013-09-08 21:51:02.000000000","message":"You shouldn\u0027t need to have the create_net parameter here. We need to generate the per tenant networking if tenant isolation is enabled with neutron right? You should check the tempest config to see if neutron is enabled.\n\nIf there is a test case where you need an isolated tenant without networking the test should generate the credentials itself.","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            self.isolated_creds[\u0027primary\u0027] \u003d (user, tenant)"},{"line_number":283,"context_line":"            LOG.info(\"Acquired isolated creds:\\n user: %s, tenant: %s\""},{"line_number":284,"context_line":"                     % (username, tenant_name))"},{"line_number":285,"context_line":"            if create_net and self.config.service_available.neutron:"},{"line_number":286,"context_line":"                network, subnet, router \u003d self._create_network_resources("},{"line_number":287,"context_line":"                    self._get_tenant_id(tenant))"},{"line_number":288,"context_line":"                self.isolated_net_resources[\u0027primary\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2BM%3D","line":285,"updated":"2013-09-08 21:51:02.000000000","message":"This should just be: \n\nif self.config.service_available.neutron:","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":301,"context_line":"            self.isolated_creds[\u0027admin\u0027] \u003d (user, tenant)"},{"line_number":302,"context_line":"            LOG.info(\"Acquired admin isolated creds:\\n user: %s, tenant: %s\""},{"line_number":303,"context_line":"                     % (username, tenant_name))"},{"line_number":304,"context_line":"            if create_net and self.config.service_available.neutron:"},{"line_number":305,"context_line":"                network, subnet, router \u003d self._create_network_resources("},{"line_number":306,"context_line":"                    self._get_tenant_id(tenant))"},{"line_number":307,"context_line":"                self.isolated_net_resources[\u0027admin\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2BI%3D","line":304,"updated":"2013-09-08 21:51:02.000000000","message":"Same here","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"174704c2459a097e2a6cd534183d1e94e74a12c8","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            self.isolated_creds[\u0027alt\u0027] \u003d (user, tenant)"},{"line_number":321,"context_line":"            LOG.info(\"Acquired alt isolated creds:\\n user: %s, tenant: %s\""},{"line_number":322,"context_line":"                     % (username, tenant_name))"},{"line_number":323,"context_line":"            if create_net and self.config.service_available.neutron:"},{"line_number":324,"context_line":"                network, subnet, router \u003d self._create_network_resources("},{"line_number":325,"context_line":"                    self._get_tenant_id(tenant))"},{"line_number":326,"context_line":"                self.isolated_net_resources[\u0027alt\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FQ%2BE%3D","line":323,"updated":"2013-09-08 21:51:02.000000000","message":"and here...","commit_id":"74dde21585d7e9e16175a8bb53247b0e1fb7083a"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08c4be4b65a6da3b5ea5383703a4e576f6537c17","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        network_name \u003d rand_name_root + \"-network\""},{"line_number":196,"context_line":"        network \u003d self._create_network(network_name, tenant_id)"},{"line_number":197,"context_line":"        subnet_name \u003d rand_name_root + \"-subnet\""},{"line_number":198,"context_line":"        subnet \u003d self._create_subnet(subnet_name, tenant_id, network[\u0027id\u0027])"},{"line_number":199,"context_line":"        router_name \u003d rand_name_root + \"-router\""},{"line_number":200,"context_line":"        router \u003d self._create_router(router_name, tenant_id, subnet[\u0027id\u0027])"},{"line_number":201,"context_line":"        return network, subnet, router"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FKz0%3D","line":198,"updated":"2013-09-10 18:22:57.000000000","message":"Will this work with the official client too? I know for the keystoneclient stuff id is an attr on the returned objects so you can\u0027t treat it as a key.","commit_id":"035a528c104e6a58dbdda5416851f12fb6ecfac1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"864ca16c0417d6fa0c398a4147725e471dcea244","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        network_name \u003d rand_name_root + \"-network\""},{"line_number":196,"context_line":"        network \u003d self._create_network(network_name, tenant_id)"},{"line_number":197,"context_line":"        subnet_name \u003d rand_name_root + \"-subnet\""},{"line_number":198,"context_line":"        subnet \u003d self._create_subnet(subnet_name, tenant_id, network[\u0027id\u0027])"},{"line_number":199,"context_line":"        router_name \u003d rand_name_root + \"-router\""},{"line_number":200,"context_line":"        router \u003d self._create_router(router_name, tenant_id, subnet[\u0027id\u0027])"},{"line_number":201,"context_line":"        return network, subnet, router"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FJ0I%3D","line":198,"in_reply_to":"AAAASn%2F%2FKz0%3D","updated":"2013-09-11 03:17:49.000000000","message":"Yes, it will work. As we talked today over IRC, the Neutron official client returns the same dictionary it gets from the Neutron API. No objects with attributes like in the case of Nova or Keystone","commit_id":"035a528c104e6a58dbdda5416851f12fb6ecfac1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08c4be4b65a6da3b5ea5383703a4e576f6537c17","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        subnet_name \u003d rand_name_root + \"-subnet\""},{"line_number":198,"context_line":"        subnet \u003d self._create_subnet(subnet_name, tenant_id, network[\u0027id\u0027])"},{"line_number":199,"context_line":"        router_name \u003d rand_name_root + \"-router\""},{"line_number":200,"context_line":"        router \u003d self._create_router(router_name, tenant_id, subnet[\u0027id\u0027])"},{"line_number":201,"context_line":"        return network, subnet, router"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def _create_network(self, name, tenant_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FKzw%3D","line":200,"updated":"2013-09-10 18:22:57.000000000","message":"Same question here.","commit_id":"035a528c104e6a58dbdda5416851f12fb6ecfac1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"864ca16c0417d6fa0c398a4147725e471dcea244","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        subnet_name \u003d rand_name_root + \"-subnet\""},{"line_number":198,"context_line":"        subnet \u003d self._create_subnet(subnet_name, tenant_id, network[\u0027id\u0027])"},{"line_number":199,"context_line":"        router_name \u003d rand_name_root + \"-router\""},{"line_number":200,"context_line":"        router \u003d self._create_router(router_name, tenant_id, subnet[\u0027id\u0027])"},{"line_number":201,"context_line":"        return network, subnet, router"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def _create_network(self, name, tenant_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FJ0E%3D","line":200,"in_reply_to":"AAAASn%2F%2FKzw%3D","updated":"2013-09-11 03:17:49.000000000","message":"Yes, it will work. As we talked today over IRC, the Neutron official client returns the same dictionary it gets from the Neutron API. No objects with attributes like in the case of Nova or Keystone","commit_id":"035a528c104e6a58dbdda5416851f12fb6ecfac1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"08c4be4b65a6da3b5ea5383703a4e576f6537c17","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            except exceptions.BadRequest as e:"},{"line_number":229,"context_line":"                if \u0027overlaps with another subnet\u0027 not in str(e):"},{"line_number":230,"context_line":"                    raise"},{"line_number":231,"context_line":"        return resp_body[\u0027subnet\u0027]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def _create_router(self, router_name, tenant_id, subnet_id):"},{"line_number":234,"context_line":"        external_net_id \u003d dict("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FKw4%3D","line":231,"updated":"2013-09-10 18:22:57.000000000","message":"What if the loop here exits without finding a non-overlapping subnet? This will just use the last entry in the list. You probably should prevent this an raise an exception if that happens.","commit_id":"035a528c104e6a58dbdda5416851f12fb6ecfac1"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"864ca16c0417d6fa0c398a4147725e471dcea244","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            except exceptions.BadRequest as e:"},{"line_number":229,"context_line":"                if \u0027overlaps with another subnet\u0027 not in str(e):"},{"line_number":230,"context_line":"                    raise"},{"line_number":231,"context_line":"        return resp_body[\u0027subnet\u0027]"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def _create_router(self, router_name, tenant_id, subnet_id):"},{"line_number":234,"context_line":"        external_net_id \u003d dict("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FJy8%3D","line":231,"in_reply_to":"AAAASn%2F%2FKw4%3D","updated":"2013-09-11 03:17:49.000000000","message":"Added else to the for loop to handle this situation","commit_id":"035a528c104e6a58dbdda5416851f12fb6ecfac1"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"4c9a7076e97d2e6940df4b481b39f837c8cde4d0","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            router \u003d self._create_router(router_name, tenant_id)"},{"line_number":205,"context_line":"            self._add_router_interface(router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":206,"context_line":"        except:"},{"line_number":207,"context_line":"            if network:"},{"line_number":208,"context_line":"                self._clear_isolated_network(network[\u0027id\u0027], network[\u0027name\u0027])"},{"line_number":209,"context_line":"            if subnet:"},{"line_number":210,"context_line":"                self._clear_isolated_subnet(subnet[\u0027id\u0027], subnet[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FJdc%3D","line":207,"updated":"2013-09-11 05:20:49.000000000","message":"Please use the reverse order.","commit_id":"69e6894097bf9454cd5fb7bfb72ee2a8388a4863"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f214282d2c61e9309842ea94599c7e0361c8aeab","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            router \u003d self._create_router(router_name, tenant_id)"},{"line_number":205,"context_line":"            self._add_router_interface(router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":206,"context_line":"        except:"},{"line_number":207,"context_line":"            if network:"},{"line_number":208,"context_line":"                self._clear_isolated_network(network[\u0027id\u0027], network[\u0027name\u0027])"},{"line_number":209,"context_line":"            if subnet:"},{"line_number":210,"context_line":"                self._clear_isolated_subnet(subnet[\u0027id\u0027], subnet[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FIBE%3D","line":207,"in_reply_to":"AAAASn%2F%2FJdc%3D","updated":"2013-09-11 15:22:24.000000000","message":"Duuuh!!! I should know better..... Oh well, I\u0027ll fix it tonight","commit_id":"69e6894097bf9454cd5fb7bfb72ee2a8388a4863"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"cafda877391957af69c89e9b5ce1ae338380d05c","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        router \u003d None"},{"line_number":197,"context_line":"        rand_name_root \u003d rand_name(self.name)"},{"line_number":198,"context_line":"        network_name \u003d rand_name_root + \"-network\""},{"line_number":199,"context_line":"        network \u003d self._create_network(network_name, tenant_id)"},{"line_number":200,"context_line":"        try:"},{"line_number":201,"context_line":"            subnet_name \u003d rand_name_root + \"-subnet\""},{"line_number":202,"context_line":"            subnet \u003d self._create_subnet(subnet_name, tenant_id, network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FC7g%3D","line":199,"updated":"2013-09-13 00:42:42.000000000","message":"maybe a stupid question but why should this go outside the try?","commit_id":"5ec3d2611ea9fd0a5a3e7d4990af2e6760ff50d3"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"9267bc36f62b5c87563e491b224431cdb29fed7c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            router_name \u003d rand_name_root + \"-router\""},{"line_number":204,"context_line":"            router \u003d self._create_router(router_name, tenant_id)"},{"line_number":205,"context_line":"            self._add_router_interface(router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":206,"context_line":"        except Exception:"},{"line_number":207,"context_line":"            if router:"},{"line_number":208,"context_line":"                self._clear_isolated_router(router[\u0027id\u0027], router[\u0027name\u0027])"},{"line_number":209,"context_line":"            if subnet:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAASn%2F%2FD%2BY%3D","line":206,"updated":"2013-09-12 18:00:17.000000000","message":"I\u0027m not the biggest fan of this logic. But I guess it\u0027s ok.","commit_id":"5ec3d2611ea9fd0a5a3e7d4990af2e6760ff50d3"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"4b73f75a5a0fc1b58b92af566e10431e845073ad","unresolved":false,"context_lines":[{"line_number":402,"context_line":"            pass"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    def _cleanup_ports(self, network_id):"},{"line_number":405,"context_line":"        # TODO (mlavalle) This method will be removed once patch"},{"line_number":406,"context_line":"        # https://review.openstack.org/#/c/46563/ merges in Neutron"},{"line_number":407,"context_line":"        if not self.ports:"},{"line_number":408,"context_line":"            if self.tempest_client:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FqHI%3D","line":405,"updated":"2013-09-23 09:32:57.000000000","message":"# usage of TODO is as \"TODO(NAME)\" .\nHere you have used TODO\u003cspace\u003e (NAME).\n\nRemove space from here.","commit_id":"6334621891b06bad2c5e051733bd4da208d74af6"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"97be44573a78b9d4a6f522b229f7c7920e2046ac","unresolved":false,"context_lines":[{"line_number":402,"context_line":"            pass"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    def _cleanup_ports(self, network_id):"},{"line_number":405,"context_line":"        # TODO (mlavalle) This method will be removed once patch"},{"line_number":406,"context_line":"        # https://review.openstack.org/#/c/46563/ merges in Neutron"},{"line_number":407,"context_line":"        if not self.ports:"},{"line_number":408,"context_line":"            if self.tempest_client:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FpSU%3D","line":405,"in_reply_to":"AAAAS3%2F%2FqHI%3D","updated":"2013-09-23 14:05:00.000000000","message":"Hey, Thanks","commit_id":"6334621891b06bad2c5e051733bd4da208d74af6"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"18fea57ae2d9cf054b4c17e951da5843636b9f1e","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        router \u003d None"},{"line_number":199,"context_line":"        rand_name_root \u003d rand_name(self.name)"},{"line_number":200,"context_line":"        network_name \u003d rand_name_root + \"-network\""},{"line_number":201,"context_line":"        network \u003d self._create_network(network_name, tenant_id)"},{"line_number":202,"context_line":"        try:"},{"line_number":203,"context_line":"            subnet_name \u003d rand_name_root + \"-subnet\""},{"line_number":204,"context_line":"            subnet \u003d self._create_subnet(subnet_name, tenant_id, network[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FfQ4%3D","line":201,"updated":"2013-09-25 20:33:16.000000000","message":"It\u0027s a little weird this is outside the try, but it doesn\u0027t really matter.","commit_id":"b8fabc5614f2648a297cb3933723cf37e0418861"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"18fea57ae2d9cf054b4c17e951da5843636b9f1e","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            router_name \u003d rand_name_root + \"-router\""},{"line_number":206,"context_line":"            router \u003d self._create_router(router_name, tenant_id)"},{"line_number":207,"context_line":"            self._add_router_interface(router[\u0027id\u0027], subnet[\u0027id\u0027])"},{"line_number":208,"context_line":"        except Exception:"},{"line_number":209,"context_line":"            if router:"},{"line_number":210,"context_line":"                self._clear_isolated_router(router[\u0027id\u0027], router[\u0027name\u0027])"},{"line_number":211,"context_line":"            if subnet:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAS3%2F%2FfQ0%3D","line":208,"updated":"2013-09-25 20:33:16.000000000","message":"As I said before I\u0027m not the biggest fan of this block here. But, I don\u0027t have any alternatives so I guess it\u0027s good enough for now.","commit_id":"b8fabc5614f2648a297cb3933723cf37e0418861"}]}
