)]}'
{"designate_tempest_plugin/common/models.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class ZoneFile(object):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def __init__(self, origin, ttl, records):"},{"line_number":21,"context_line":"        self.origin \u003d origin"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_d3387440","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":23},"updated":"2016-04-21 12:14:00.000000000","message":"Replying to paul from another PS: I do find the \"models\" a bit odd, though I\u0027ve no suggestion for something else.. So, lets leave them for now.","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"}],"designate_tempest_plugin/services/dns/json/base.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                 object."},{"line_number":103,"context_line":"        \"\"\""},{"line_number":104,"context_line":"        body \u003d \u0027\u0027"},{"line_number":105,"context_line":"        if object_dict is not None:"},{"line_number":106,"context_line":"            body \u003d self.serialize(object_dict)"},{"line_number":107,"context_line":"        uri \u003d self.get_uri(resource, params\u003dparams)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        resp, body \u003d self.post(uri, body\u003dbody, headers\u003dheaders,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_b32fb8a6","line":106,"range":{"start_line":105,"start_character":8,"end_line":106,"end_character":46},"updated":"2016-04-21 12:14:00.000000000","message":"Similar to the comment below, I think I\u0027d prefer to see the decision to serialize or not included in the `serialize` method, though I\u0027m not entirely sure what we can key off to make it work nicely.","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        return resp, self.deserialize(body)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _show_request(self, resource, uuid\u003dNone, headers\u003dNone, params\u003dNone,"},{"line_number":116,"context_line":"                      deserialize\u003dTrue):"},{"line_number":117,"context_line":"        \"\"\"Gets a specific object of the specified type."},{"line_number":118,"context_line":"        :param resource: The name of the REST resource, e.g., \u0027zones\u0027."}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_d3b9947b","line":115,"range":{"start_line":115,"start_character":38,"end_line":115,"end_character":47},"updated":"2016-04-21 12:14:00.000000000","message":"re uuid\u003dNone, See my comment on designate_tempest_plugin/services/dns/v2/json/zone_exports_client.py","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        return resp, self.deserialize(body)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def _show_request(self, resource, uuid\u003dNone, headers\u003dNone, params\u003dNone,"},{"line_number":116,"context_line":"                      deserialize\u003dTrue):"},{"line_number":117,"context_line":"        \"\"\"Gets a specific object of the specified type."},{"line_number":118,"context_line":"        :param resource: The name of the REST resource, e.g., \u0027zones\u0027."},{"line_number":119,"context_line":"        :param uuid: Unique identifier of the object in UUID format."}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_13d78cc0","line":116,"range":{"start_line":116,"start_character":22,"end_line":116,"end_character":38},"updated":"2016-04-21 12:14:00.000000000","message":"Mmm, I\u0027m not sure about adding this deserialize param.. Maybe, instead should pass both the resp and body into self.deserialize() method, and then json.loads() when the content-type is application/json, parse the zone when it\u0027s text/dns, and raise an exception if it\u0027s something else?","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"},{"author":{"_account_id":11662,"name":"Paul Glass","email":"paul.glass@rackspace.com","username":"pglass"},"change_message_id":"ab91bdb6502f9224fd63c1dd495331b14b1310c4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        return json.dumps(object_dict)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def deserialize(self, resp, object_str):"},{"line_number":56,"context_line":"        if resp[\u0027content-type\u0027] \u003d\u003d \u0027application/json; charset\u003dUTF-8\u0027:"},{"line_number":57,"context_line":"            return json.loads(object_str)"},{"line_number":58,"context_line":"        elif resp[\u0027content-type\u0027] \u003d\u003d \u0027text/dns; charset\u003dUTF-8\u0027:"},{"line_number":59,"context_line":"            return ZoneFile.from_text(object_str)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a122d0e_c703a00b","line":56,"updated":"2016-04-29 14:50:31.000000000","message":"Can we make this less strict? Something like\n\n    if \u0027application/json\u0027 in resp[\u0027content-type\u0027]:\n    if \u0027text/dns\u0027 in resp[\u0027content-type\u0027]:","commit_id":"1b875233886aab2129fbc4ad02863fcce852155b"}],"designate_tempest_plugin/services/dns/v2/json/zone_exports_client.py":[{"author":{"_account_id":11662,"name":"Paul Glass","email":"paul.glass@rackspace.com","username":"pglass"},"change_message_id":"2563ec9b6ed3ea16c58ba76d6165ec866db6bda3","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        resp, body \u003d self._show_request("},{"line_number":67,"context_line":"            \u0027zones/tasks/exports/{0}/export\u0027.format(uuid),"},{"line_number":68,"context_line":"            headers\u003dheaders, params\u003dparams, deserialize\u003dFalse)"},{"line_number":69,"context_line":"        if resp.status \u003c 400:"},{"line_number":70,"context_line":"            return resp, ZoneFile.from_text(body)"},{"line_number":71,"context_line":"        return resp, body"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_2b951232","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":29},"updated":"2016-04-20 20:46:27.000000000","message":"Tempest\u0027s client will raise an exception if the status code is \u003e\u003d 400, so you can assume the status code is \u003c 400, and remove the conditional.","commit_id":"3a2beacc2e60bf6d23df578551a9f881feec70a4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027text/dns\u0027}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        resp, body \u003d self._show_request("},{"line_number":66,"context_line":"            \u0027zones/tasks/exports/{0}/export\u0027.format(uuid),"},{"line_number":67,"context_line":"            headers\u003dheaders, params\u003dparams, deserialize\u003dFalse)"},{"line_number":68,"context_line":"        return resp, body"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @base.handle_errors"},{"line_number":71,"context_line":"    def list_zones_exports(self, params\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_3640b635","line":68,"range":{"start_line":65,"start_character":8,"end_line":68,"end_character":25},"updated":"2016-04-21 12:14:00.000000000","message":"I think this is one of the cases were rather than adding logic to the base method to handle every edge case in our API, we should instead just call self.get() etc directly here.","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"}],"designate_tempest_plugin/tests/api/v2/test_zones_exports.py":[{"author":{"_account_id":11662,"name":"Paul Glass","email":"paul.glass@rackspace.com","username":"pglass"},"change_message_id":"2563ec9b6ed3ea16c58ba76d6165ec866db6bda3","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        LOG.info(\u0027Ensure the fetched response matches the exported zone\u0027)"},{"line_number":95,"context_line":"        self.assertEqual(zone[\u0027name\u0027], body.origin)"},{"line_number":96,"context_line":"        self.assertEqual(zone[\u0027ttl\u0027], body.ttl)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":99,"context_line":"    @test.idempotent_id(\u002797234f00-8bcb-43f8-84dd-874f8bc4a80e\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_8b34264a","line":96,"updated":"2016-04-20 20:46:27.000000000","message":"This test failed here: http://logs.openstack.org/09/306409/6/check/gate-tempest-dsvm-designate-bind9/6f0a1ae/console.html#_2016-04-20_17_57_14_919\n\nIn order to fetch the exported zone file, you need to wait for a COMPLETED status on the zone export. That means this test needs to be moved to the tests/scenarios/ tree.","commit_id":"3a2beacc2e60bf6d23df578551a9f881feec70a4"},{"author":{"_account_id":15699,"name":"sonu","email":"sonu.bhumca11@gmail.com","username":"sonu.kumar"},"change_message_id":"f488e2c1940cae481175194781cc5196cebd6221","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        LOG.info(\u0027Ensure the fetched response matches the exported zone\u0027)"},{"line_number":95,"context_line":"        self.assertEqual(zone[\u0027name\u0027], body.origin)"},{"line_number":96,"context_line":"        self.assertEqual(zone[\u0027ttl\u0027], body.ttl)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":99,"context_line":"    @test.idempotent_id(\u002797234f00-8bcb-43f8-84dd-874f8bc4a80e\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_67cf3156","line":96,"in_reply_to":"1a122d0e_8b34264a","updated":"2016-04-21 04:18:05.000000000","message":"ok. I will remove it from APIs tests and will move it to scenarios tests.","commit_id":"3a2beacc2e60bf6d23df578551a9f881feec70a4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        _, zone \u003d self.zone_client.create_zone()"},{"line_number":42,"context_line":"        self.addCleanup(self.zone_client.delete_zone, zone[\u0027id\u0027])"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        LOG.info(\u0027Ensure we respond with CREATE+PENDING\u0027)"},{"line_number":45,"context_line":"        self.assertEqual(\u0027CREATE\u0027, zone[\u0027action\u0027])"},{"line_number":46,"context_line":"        self.assertEqual(\u0027PENDING\u0027, zone[\u0027status\u0027])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        LOG.info(\u0027Create a zone export\u0027)"},{"line_number":49,"context_line":"        _, zone_export \u003d self.client.create_zone_export(zone[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_73f080ca","line":46,"range":{"start_line":44,"start_character":8,"end_line":46,"end_character":51},"updated":"2016-04-21 12:14:00.000000000","message":"Can we remove the \"redundant\" assertions etc? e.g. in this test, we only care about the zone-export response and should assume create zone worked as intended.","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        _, zone \u003d self.zone_client.create_zone()"},{"line_number":58,"context_line":"        self.addCleanup(self.zone_client.delete_zone, zone[\u0027id\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        LOG.info(\u0027Ensure we respond with CREATE+PENDING\u0027)"},{"line_number":61,"context_line":"        self.assertEqual(\u0027CREATE\u0027, zone[\u0027action\u0027])"},{"line_number":62,"context_line":"        self.assertEqual(\u0027PENDING\u0027, zone[\u0027status\u0027])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        LOG.info(\u0027Create a zone export\u0027)"},{"line_number":65,"context_line":"        _, zone_export \u003d self.client.create_zone_export(zone[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_53c4645e","line":62,"range":{"start_line":60,"start_character":8,"end_line":62,"end_character":47},"updated":"2016-04-21 12:14:00.000000000","message":"Same as above","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        _, zone \u003d self.zone_client.create_zone()"},{"line_number":97,"context_line":"        self.addCleanup(self.zone_client.delete_zone, zone[\u0027id\u0027])"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        LOG.info(\u0027Ensure we respond with CREATE+PENDING\u0027)"},{"line_number":100,"context_line":"        self.assertEqual(\u0027CREATE\u0027, zone[\u0027action\u0027])"},{"line_number":101,"context_line":"        self.assertEqual(\u0027PENDING\u0027, zone[\u0027status\u0027])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        _, export \u003d self.client.create_zone_export(zone[\u0027id\u0027])"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_b39fb864","line":101,"range":{"start_line":99,"start_character":8,"end_line":101,"end_character":51},"updated":"2016-04-21 12:14:00.000000000","message":"Same as above","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"8400eb64f8c0e9681149dd097e270f18cc1e9c3a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        LOG.info(\u0027List zones exports\u0027)"},{"line_number":106,"context_line":"        _, body \u003d self.client.list_zones_exports()"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        self.assertTrue(len(body[\u0027exports\u0027]) \u003e 0)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_f3977038","line":108,"range":{"start_line":108,"start_character":8,"end_line":108,"end_character":49},"updated":"2016-04-21 12:14:00.000000000","message":"Can we instead assert that the created zone export is actually in the list? We should probably do this on the other resource list tests too - but we should circle back and treat that as a separate review later","commit_id":"5da47a98b54d66ab45bb50ad505df0c2fea704ad"}]}
