)]}'
{"tempest/api/network/test_versions.py":[{"author":{"_account_id":6754,"name":"Mark T. Voelker","email":"markvoelker@gmail.com","username":"mvoelker"},"change_message_id":"d92af5bd6c84228e9c6ecdb1474f604fee676723","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            for version in item:"},{"line_number":63,"context_line":"                for resource in expected_resources:"},{"line_number":64,"context_line":"                    self.assertIn(resource, version)"},{"line_number":65,"context_line":"                self.assertIn(version[\u0027id\u0027], expected_versions)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_cb9ed953","line":65,"range":{"start_line":65,"start_character":16,"end_line":65,"end_character":63},"updated":"2016-05-02 18:48:56.000000000","message":"Hmm, forgot I added this in right before my plane home from Austin landed (at 1am).  With this here, we could potentially drop the first test entirely since this checks that we get the versions we expected.\n\nAny objections?","commit_id":"ced3ba4bac37b44598c68fb95def26fb856dbd93"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"bfa36b2d265b29b957e1a13cab5c46f7b466cfad","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            for version in item:"},{"line_number":63,"context_line":"                for resource in expected_resources:"},{"line_number":64,"context_line":"                    self.assertIn(resource, version)"},{"line_number":65,"context_line":"                self.assertIn(version[\u0027id\u0027], expected_versions)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_18e65316","line":65,"range":{"start_line":65,"start_character":16,"end_line":65,"end_character":63},"in_reply_to":"1a122d0e_cb9ed953","updated":"2016-05-03 08:59:17.000000000","message":"Indeed. You should drop the first test, because it will fail the moment Neutron will want to introduce a new version.","commit_id":"ced3ba4bac37b44598c68fb95def26fb856dbd93"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"efd676e484162434055994e3486c3f0c832a8e58","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            for version in item:"},{"line_number":38,"context_line":"                for resource in expected_resources:"},{"line_number":39,"context_line":"                    self.assertIn(resource, version)"},{"line_number":40,"context_line":"                self.assertIn(version[\u0027id\u0027], expected_versions)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_2c2b2c35","line":40,"updated":"2016-05-24 13:36:21.000000000","message":"What if Neutron wants to introduce v2.1 ? Will this test (this line) block them in doing so ?","commit_id":"c0da40c36f4f6960a7a0fdefa9036e9eea629c8c"}],"tempest/clients.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4efeae1fc73f66c4e367078c8bdce2c871256c23","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            CONF.identity.region,"},{"line_number":232,"context_line":"            endpoint_type\u003dCONF.baremetal.endpoint_type,"},{"line_number":233,"context_line":"            **self.default_params_with_timeout_values)"},{"line_number":234,"context_line":"        self.network_versions_client \u003d NetworkVersionsClient("},{"line_number":235,"context_line":"            self.auth_provider,"},{"line_number":236,"context_line":"            CONF.network.catalog_type,"},{"line_number":237,"context_line":"            CONF.network.region or CONF.identity.region,"},{"line_number":238,"context_line":"            endpoint_type\u003dCONF.network.endpoint_type,"},{"line_number":239,"context_line":"            build_interval\u003dCONF.network.build_interval,"},{"line_number":240,"context_line":"            build_timeout\u003dCONF.network.build_timeout,"},{"line_number":241,"context_line":"            **self.default_params)"},{"line_number":242,"context_line":"        self.orchestration_client \u003d OrchestrationClient("},{"line_number":243,"context_line":"            self.auth_provider,"},{"line_number":244,"context_line":"            CONF.orchestration.catalog_type,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_bc734d4d","line":241,"range":{"start_line":234,"start_character":0,"end_line":241,"end_character":34},"updated":"2016-06-13 16:43:36.000000000","message":"This should go into the _set_network_clients","commit_id":"ecca089690db7bb32e881764306b0bbf3aa25093"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"a4cb50845d0567551e3df3a04eac8b021a54d9d1","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            self.auth_provider, **params)"},{"line_number":284,"context_line":"        self.security_groups_client \u003d SecurityGroupsClient("},{"line_number":285,"context_line":"            self.auth_provider, **params)"},{"line_number":286,"context_line":"        self.network_versions_client \u003d NetworkVersionsClient("},{"line_number":287,"context_line":"            self.auth_provider,"},{"line_number":288,"context_line":"            CONF.network.catalog_type,"},{"line_number":289,"context_line":"            CONF.network.region or CONF.identity.region,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7aa08908_3d6618bb","line":286,"updated":"2016-06-14 09:46:32.000000000","message":"Can\u0027t you use \n  self.network_versions_client \u003d NetworkVersionsClient(\nself.auth_provider, **params)\n\nhere ?","commit_id":"cb8d67d6f0880c295a22632016b2ee4b9c688ddc"},{"author":{"_account_id":6754,"name":"Mark T. Voelker","email":"markvoelker@gmail.com","username":"mvoelker"},"change_message_id":"c961f6149f4845b1e5d9a772ca48bb71b3050f25","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            self.auth_provider, **params)"},{"line_number":284,"context_line":"        self.security_groups_client \u003d SecurityGroupsClient("},{"line_number":285,"context_line":"            self.auth_provider, **params)"},{"line_number":286,"context_line":"        self.network_versions_client \u003d NetworkVersionsClient("},{"line_number":287,"context_line":"            self.auth_provider,"},{"line_number":288,"context_line":"            CONF.network.catalog_type,"},{"line_number":289,"context_line":"            CONF.network.region or CONF.identity.region,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7aa08908_c3dedf0f","line":286,"in_reply_to":"7aa08908_3d6618bb","updated":"2016-06-15 04:18:08.000000000","message":"Hmm...yes, actually.  Good catch.","commit_id":"cb8d67d6f0880c295a22632016b2ee4b9c688ddc"}],"tempest/lib/services/network/versions_client.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"52974af7744fb710457d7377d00b6167c3ce418e","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        endpoint \u003d self.base_url"},{"line_number":27,"context_line":"        url \u003d urllib.parse.urlparse(endpoint)"},{"line_number":28,"context_line":"        version_url \u003d \u0027%s://%s/\u0027 % (url.scheme, url.netloc)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        # Note: we do a raw_request here because we want to use"},{"line_number":31,"context_line":"        # an unversioned URL, not \"v2/$project_id/\"."}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_97aeb52d","line":28,"updated":"2016-06-15 15:54:54.000000000","message":"nit: you probably could use urllib.parse.urlunsplit() here instead of hand crafting a string by hand:\n\nhttps://docs.python.org/2/library/urlparse.html#urlparse.urlunparse\n\nBut this works fine","commit_id":"2f607d9f3a8465f3bacf74fa7494db03aa7cc962"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"52974af7744fb710457d7377d00b6167c3ce418e","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        # Note: we do a raw_request here because we want to use"},{"line_number":31,"context_line":"        # an unversioned URL, not \"v2/$project_id/\"."},{"line_number":32,"context_line":"        response, body \u003d self.raw_request(version_url, \u0027GET\u0027)"},{"line_number":33,"context_line":"        body \u003d json.loads(body)"},{"line_number":34,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_d26a0b81","line":32,"updated":"2016-06-15 15:54:54.000000000","message":"You\u0027re not checking the response code here. Shouldn\u0027t this request have a 200 or a 300 response code? We normally assert that after the api call with something like:\n\n self.expected_success(200, response.status)\n\nwith the expected code and the one returned by the request call. The other neutron clients do this in the base client because they wrapped basic crud operations.","commit_id":"2f607d9f3a8465f3bacf74fa7494db03aa7cc962"},{"author":{"_account_id":6754,"name":"Mark T. Voelker","email":"markvoelker@gmail.com","username":"mvoelker"},"change_message_id":"33eaa2fc128905daa44bd02789ce2dfedb956792","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        # Note: we do a raw_request here because we want to use"},{"line_number":31,"context_line":"        # an unversioned URL, not \"v2/$project_id/\"."},{"line_number":32,"context_line":"        response, body \u003d self.raw_request(version_url, \u0027GET\u0027)"},{"line_number":33,"context_line":"        body \u003d json.loads(body)"},{"line_number":34,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":16,"id":"7aa08908_7613c45c","line":32,"in_reply_to":"7aa08908_d26a0b81","updated":"2016-06-17 21:18:31.000000000","message":"Sure, easy enough.","commit_id":"2f607d9f3a8465f3bacf74fa7494db03aa7cc962"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"29390a630d92dd820c81d602f3d9fac0e91c0e4c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        # Note: we do a raw_request here because we want to use"},{"line_number":33,"context_line":"        # an unversioned URL, not \"v2/$project_id/\"."},{"line_number":34,"context_line":"        # Since raw_request doesn\u0027t log anything, we do that too."},{"line_number":35,"context_line":"        start \u003d time.time()"},{"line_number":36,"context_line":"        self._log_request_start(\u0027GET\u0027, version_url)"},{"line_number":37,"context_line":"        response, body \u003d self.raw_request(version_url, \u0027GET\u0027)"},{"line_number":38,"context_line":"        end \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":18,"id":"7aa08908_0278337d","line":35,"updated":"2016-06-18 04:05:49.000000000","message":"Haha, I forgot that we don\u0027t do the timing in raw request either. That might be a future improvement we want to make to the rest client, but that would definitely be a follow on change","commit_id":"abd4cbd0106af94b91bbbed378bafe11f6133481"}],"tempest/services/network/json/__init__.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4efeae1fc73f66c4e367078c8bdce2c871256c23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7aa08908_1ce9c1b7","updated":"2016-06-13 16:43:36.000000000","message":"NIT: even if this is added into tempest rather than tempest.lib, I don\u0027t think we need the /json folder","commit_id":"ecca089690db7bb32e881764306b0bbf3aa25093"},{"author":{"_account_id":6754,"name":"Mark T. Voelker","email":"markvoelker@gmail.com","username":"mvoelker"},"change_message_id":"81dbb3143fbbc68ff511dcda0f34b8ffdbbe2679","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7aa08908_bfddfc15","in_reply_to":"7aa08908_1ce9c1b7","updated":"2016-06-13 18:30:49.000000000","message":"Yeah, this was basically just following the pattern of some of the other (since moved) tests.  I see no particular reason for it now either, so I\u0027ll drop it.","commit_id":"ecca089690db7bb32e881764306b0bbf3aa25093"}],"tempest/services/network/json/versions_client.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"efd676e484162434055994e3486c3f0c832a8e58","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from six.moves import urllib"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_serialization import jsonutils as json"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.lib.services.network import base"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_2cb96ced","line":16,"updated":"2016-05-24 13:36:21.000000000","message":"Not empty line here. Six and oslo_serialization are 3rd party module.","commit_id":"c0da40c36f4f6960a7a0fdefa9036e9eea629c8c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4efeae1fc73f66c4e367078c8bdce2c871256c23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7aa08908_bcaa2d6f","updated":"2016-06-13 16:43:36.000000000","message":"Any reason for not getting this into LIB directly?","commit_id":"ecca089690db7bb32e881764306b0bbf3aa25093"},{"author":{"_account_id":6754,"name":"Mark T. Voelker","email":"markvoelker@gmail.com","username":"mvoelker"},"change_message_id":"81dbb3143fbbc68ff511dcda0f34b8ffdbbe2679","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7aa08908_7fd8b41e","in_reply_to":"7aa08908_bcaa2d6f","updated":"2016-06-13 18:30:49.000000000","message":"Sure, I can do that.  Looks like most of the other network stuff has moved there since the original work on this.","commit_id":"ecca089690db7bb32e881764306b0bbf3aa25093"}],"tempest/tests/lib/services/network/base.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4efeae1fc73f66c4e367078c8bdce2c871256c23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7aa08908_1c0ee18b","updated":"2016-06-13 16:43:36.000000000","message":"This is now defined into BaseServiceTest so this code is duplicated","commit_id":"ecca089690db7bb32e881764306b0bbf3aa25093"},{"author":{"_account_id":6754,"name":"Mark T. Voelker","email":"markvoelker@gmail.com","username":"mvoelker"},"change_message_id":"81dbb3143fbbc68ff511dcda0f34b8ffdbbe2679","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7aa08908_bf04dc7d","in_reply_to":"7aa08908_1c0ee18b","updated":"2016-06-13 18:30:49.000000000","message":"Ah, thanks for the pointer--totally missed that move.  \u003d)","commit_id":"ecca089690db7bb32e881764306b0bbf3aa25093"}]}
