)]}'
{"designate/objects/adapters/yaml/base.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"298d39f9f3c06fd9e7d21cbac6b7438a8b144a43","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                r_obj[key] \u003d cls.get_object_adapter("},{"line_number":59,"context_line":"                    cls.ADAPTER_FORMAT,"},{"line_number":60,"context_line":"                    # object.FIELDS[obj_key].get(\u0027relation_cls\u0027)).render("},{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"}],"source_content_type":"text/x-python","patch_set":21,"id":"7f96bb07_c33c04e3","line":61,"updated":"2018-01-24 14:16:31.000000000","message":"Rather drop these than commenting them out.","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"280365e987414b104aa6285ec2d9c951ad76600c","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                r_obj[key] \u003d cls.get_object_adapter("},{"line_number":59,"context_line":"                    cls.ADAPTER_FORMAT,"},{"line_number":60,"context_line":"                    # object.FIELDS[obj_key].get(\u0027relation_cls\u0027)).render("},{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_44a19bf7","line":61,"in_reply_to":"7f96bb07_c33c04e3","updated":"2018-02-01 09:14:33.000000000","message":"Ok, done!","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"298d39f9f3c06fd9e7d21cbac6b7438a8b144a43","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"},{"line_number":65,"context_line":"                r_obj[key] \u003d int(obj)"},{"line_number":66,"context_line":"            elif obj is not None:"},{"line_number":67,"context_line":"                # Just attach the damn item if there is no weird edge cases"}],"source_content_type":"text/x-python","patch_set":21,"id":"7f96bb07_835d9c48","line":64,"updated":"2018-01-24 14:16:31.000000000","message":"This looks broken, although it seems to work because the value of (\u0027max\u0027 and \u0027min\u0027) is \u0027min\u0027, so effectively we are only checking for the existence of that.\n\nMight be good enough, but then just drop the \"\u0027max\u0027 and\". Otherwise I think you would need to \"and\" two \"hasattr()\" calls here.","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"280365e987414b104aa6285ec2d9c951ad76600c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"},{"line_number":65,"context_line":"                r_obj[key] \u003d int(obj)"},{"line_number":66,"context_line":"            elif obj is not None:"},{"line_number":67,"context_line":"                # Just attach the damn item if there is no weird edge cases"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_a4b17f49","line":64,"in_reply_to":"5f93b717_e18ea777","updated":"2018-02-01 09:14:33.000000000","message":"Thanks, I have updated this following your comments.","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"bdd5981b6f2bbe34d06ba150d94ea4e16baac18f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"},{"line_number":65,"context_line":"                r_obj[key] \u003d int(obj)"},{"line_number":66,"context_line":"            elif obj is not None:"},{"line_number":67,"context_line":"                # Just attach the damn item if there is no weird edge cases"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_e18ea777","line":64,"in_reply_to":"7f96bb07_835d9c48","updated":"2018-01-31 19:08:56.000000000","message":"Maybe something like this? \n\u003e all(hasattr(FIELDS.get(obj_key), attr) for attr in [\u0027min\u0027, \u0027max\u0027])\n\nor\n\n\u003e obj \u003d FIELDS.get(obj_key, {})\n\u003e all(hasattr(obj, attr) for attr in [\u0027min\u0027, \u0027max\u0027])","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"2d75e35b5a11446c3c6ac29ffb9d02a1ff231c12","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"},{"line_number":65,"context_line":"                r_obj[key] \u003d int(obj)"},{"line_number":66,"context_line":"            elif obj is not None:"},{"line_number":67,"context_line":"                # Just attach the damn item if there is no weird edge cases"}],"source_content_type":"text/x-python","patch_set":24,"id":"3fa0c359_6b24580e","line":64,"updated":"2018-02-05 18:16:38.000000000","message":"This still needs to be fixed. This currently only checks for the existence of the min attr, and never for the max attr.","commit_id":"45d9f5109464a4226986a476e7d5dd824bf9ac03"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"fbb1967e066703fd2c210a3d2bdc0e88aea9afeb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"},{"line_number":65,"context_line":"                r_obj[key] \u003d int(obj)"},{"line_number":66,"context_line":"            elif obj is not None:"},{"line_number":67,"context_line":"                # Just attach the damn item if there is no weird edge cases"}],"source_content_type":"text/x-python","patch_set":24,"id":"3fa0c359_d4f3a49d","line":64,"in_reply_to":"3fa0c359_6b24580e","updated":"2018-02-07 01:10:16.000000000","message":"Oops, I forgot this one. Thanks!","commit_id":"45d9f5109464a4226986a476e7d5dd824bf9ac03"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"64dcbf269ea7d56be1dc0bb62a6b34bfd4eb3220","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"},{"line_number":65,"context_line":"                r_obj[key] \u003d int(obj)"},{"line_number":66,"context_line":"            elif obj is not None:"},{"line_number":67,"context_line":"                # Just attach the damn item if there is no weird edge cases"}],"source_content_type":"text/x-python","patch_set":24,"id":"3fa0c359_f41ca0c2","line":64,"in_reply_to":"3fa0c359_b417f8a3","updated":"2018-02-07 01:18:35.000000000","message":"I really prefer your way, just forget to change it, sorry :) I will immediately change it now.","commit_id":"45d9f5109464a4226986a476e7d5dd824bf9ac03"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"4e9a3058df1531191a58c3b5a21b07f9a2fefdbe","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    # cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":62,"context_line":"                    object.FIELDS[obj_key].objname).render("},{"line_number":63,"context_line":"                        cls.ADAPTER_FORMAT, obj, *args, **kwargs)"},{"line_number":64,"context_line":"            elif hasattr(object.FIELDS.get(obj_key, {}), \u0027max\u0027 and \u0027min\u0027):"},{"line_number":65,"context_line":"                r_obj[key] \u003d int(obj)"},{"line_number":66,"context_line":"            elif obj is not None:"},{"line_number":67,"context_line":"                # Just attach the damn item if there is no weird edge cases"}],"source_content_type":"text/x-python","patch_set":24,"id":"3fa0c359_b417f8a3","line":64,"in_reply_to":"3fa0c359_d4f3a49d","updated":"2018-02-07 01:12:36.000000000","message":"No worries! Thanks for all the hard-work on these patches! btw here is a recap of some of my suggestions\n\n\u003e all(hasattr(FIELDS.get(obj_key), attr) for attr in [\u0027min\u0027, \u0027max\u0027])\n\nor\n\nobj \u003d FIELDS.get(obj_key, {})\nall(hasattr(obj, attr) for attr in [\u0027min\u0027, \u0027max\u0027])","commit_id":"45d9f5109464a4226986a476e7d5dd824bf9ac03"}],"designate/objects/fields.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"bdd5981b6f2bbe34d06ba150d94ea4e16baac18f","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            if not isinstance(v, six.string_types):"},{"line_number":377,"context_line":"                return v"},{"line_number":378,"context_line":"            if not re.match(StringFields.RE_ZONENAME, \"%s\" % v) and \\"},{"line_number":379,"context_line":"                    not IPV4AddressField() and not IPV6AddressField():"},{"line_number":380,"context_line":"                raise ValueError(\"IP or Host no match with format %s\" % v)"},{"line_number":381,"context_line":"            return v"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_41c43b91","line":379,"updated":"2018-01-31 19:08:56.000000000","message":"What exactly does \n\u003e not IPV4AddressField() and not IPV6AddressField()\ndo here? feels like this maybe should be a isinstance check or similar?","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"280365e987414b104aa6285ec2d9c951ad76600c","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            if not isinstance(v, six.string_types):"},{"line_number":377,"context_line":"                return v"},{"line_number":378,"context_line":"            if not re.match(StringFields.RE_ZONENAME, \"%s\" % v) and \\"},{"line_number":379,"context_line":"                    not IPV4AddressField() and not IPV6AddressField():"},{"line_number":380,"context_line":"                raise ValueError(\"IP or Host no match with format %s\" % v)"},{"line_number":381,"context_line":"            return v"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_64eff7e8","line":379,"in_reply_to":"5f93b717_41c43b91","updated":"2018-02-01 09:14:33.000000000","message":"Thanks, now I switch to base on IPV4AndV6AddressField class of OVO. I think it\u0027s better way.","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"b6f34448784f27d3bf619059400fa960f77dbb11","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            if not isinstance(v, six.string_types):"},{"line_number":377,"context_line":"                return v"},{"line_number":378,"context_line":"            if not re.match(StringFields.RE_ZONENAME, \"%s\" % v) and \\"},{"line_number":379,"context_line":"                    not IPV4AddressField() and not IPV6AddressField():"},{"line_number":380,"context_line":"                raise ValueError(\"IP or Host no match with format %s\" % v)"},{"line_number":381,"context_line":"            return v"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_67be1900","line":379,"in_reply_to":"5f93b717_64eff7e8","updated":"2018-02-01 09:22:02.000000000","message":"Yep, but not only that\n\u003e not IPV4AddressField()\nwill always return False. Were you looking at doing something like \n\u003e not IPV4AddressField(value)\n?","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"e3f210fd43f669dbf6ee20f18f3530809cde9b35","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            if not isinstance(v, six.string_types):"},{"line_number":377,"context_line":"                return v"},{"line_number":378,"context_line":"            if not re.match(StringFields.RE_ZONENAME, \"%s\" % v) and \\"},{"line_number":379,"context_line":"                    not IPV4AddressField() and not IPV6AddressField():"},{"line_number":380,"context_line":"                raise ValueError(\"IP or Host no match with format %s\" % v)"},{"line_number":381,"context_line":"            return v"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_07bab56c","line":379,"in_reply_to":"5f93b717_67be1900","updated":"2018-02-01 09:42:57.000000000","message":"I\u0027m not show all of thing that I will change in this, please check the new patchset:\n\nhttps://review.openstack.org/#/c/471530/22/designate/objects/fields.py","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"8a39622012f09fb8a082d71437e5b1f4d82684ed","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        try:"},{"line_number":286,"context_line":"            value \u003d super(IPOrHost, self).coerce(obj, attr, value)"},{"line_number":287,"context_line":"        except ValueError:"},{"line_number":288,"context_line":"            if not re.match(StringFields.RE_ZONENAME, value):"},{"line_number":289,"context_line":"                raise ValueError(\"%s is not IP address or host name\" % value)"},{"line_number":290,"context_line":"        # we use this field as a string, not need a netaddr.IPAdress"},{"line_number":291,"context_line":"        # as oslo.versionedobjects is using"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f93b717_a25def15","line":288,"updated":"2018-02-01 09:50:18.000000000","message":"Looks good now.","commit_id":"8244cf70966e703f8e2335fd10009a1d63a776ff"}],"designate/objects/pool_target.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2b39d9fc0a8307aee27e2e7fed74270460658071","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027description\u0027: fields.StringFields(maxLength\u003d160, nullable\u003dTrue),"},{"line_number":27,"context_line":"        \u0027masters\u0027: fields.ObjectFields(\u0027PoolTargetMasterList\u0027),"},{"line_number":28,"context_line":"        \u0027options\u0027: fields.ObjectFields(\u0027PoolTargetOptionList\u0027),"},{"line_number":29,"context_line":"        \u0027backend\u0027: fields.StringFields(nullable\u003dTrue),"},{"line_number":30,"context_line":"    }"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    STRING_KEYS \u003d ["}],"source_content_type":"text/x-python","patch_set":23,"id":"5f93b717_c7d4c44a","line":29,"updated":"2018-02-01 14:44:50.000000000","message":"The backend is a class, not a string","commit_id":"3a92290dd52fba3eea7a1506ffdde13c58047adc"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"91b79448072eda1975638ba3ff8070b72dda6aab","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027description\u0027: fields.StringFields(maxLength\u003d160, nullable\u003dTrue),"},{"line_number":27,"context_line":"        \u0027masters\u0027: fields.ObjectFields(\u0027PoolTargetMasterList\u0027),"},{"line_number":28,"context_line":"        \u0027options\u0027: fields.ObjectFields(\u0027PoolTargetOptionList\u0027),"},{"line_number":29,"context_line":"        \u0027backend\u0027: fields.StringFields(nullable\u003dTrue),"},{"line_number":30,"context_line":"    }"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    STRING_KEYS \u003d ["}],"source_content_type":"text/x-python","patch_set":23,"id":"5f93b717_47975449","line":29,"in_reply_to":"5f93b717_c7d4c44a","updated":"2018-02-02 00:12:22.000000000","message":"Agree, the old schema is {}, so I think we should use AnyField in this. I will update it tomorrow.","commit_id":"3a92290dd52fba3eea7a1506ffdde13c58047adc"}],"designate/tests/test_pool_manager/test_service.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"298d39f9f3c06fd9e7d21cbac6b7438a8b144a43","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        self.service._update_zone_on_target \u003d Mock(return_value\u003dTrue)"},{"line_number":352,"context_line":"        self.service._update_zone_on_also_notify \u003d Mock()"},{"line_number":353,"context_line":"        self.service.pool.also_notifies \u003d objects.PoolAlsoNotifyList("},{"line_number":354,"context_line":"            objects\u003d[objects.PoolAlsoNotify(host\u003d\u00271.0.0.0:1\u0027, port\u003d1)]"},{"line_number":355,"context_line":"        )"},{"line_number":356,"context_line":"        self.service._exceed_or_meet_threshold \u003d Mock(return_value\u003dTrue)"},{"line_number":357,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"7f96bb07_78db5eec","line":354,"updated":"2018-01-24 14:16:31.000000000","message":"host is not a valid IP, I\u0027m wondering why this can work.","commit_id":"b7d33def2784767daee60522980608fc352da09c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"280365e987414b104aa6285ec2d9c951ad76600c","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        self.service._update_zone_on_target \u003d Mock(return_value\u003dTrue)"},{"line_number":352,"context_line":"        self.service._update_zone_on_also_notify \u003d Mock()"},{"line_number":353,"context_line":"        self.service.pool.also_notifies \u003d objects.PoolAlsoNotifyList("},{"line_number":354,"context_line":"            objects\u003d[objects.PoolAlsoNotify(host\u003d\u00271.0.0.0:1\u0027, port\u003d1)]"},{"line_number":355,"context_line":"        )"},{"line_number":356,"context_line":"        self.service._exceed_or_meet_threshold \u003d Mock(return_value\u003dTrue)"},{"line_number":357,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_845d6316","line":354,"in_reply_to":"7f96bb07_78db5eec","updated":"2018-02-01 09:14:33.000000000","message":"Sorry, our bad.","commit_id":"b7d33def2784767daee60522980608fc352da09c"}],"designate/tests/unit/test_pool.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"298d39f9f3c06fd9e7d21cbac6b7438a8b144a43","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class poolTest(oslotest.base.BaseTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_init_from_config(self):"},{"line_number":88,"context_line":"        pool \u003d objects.Pool.from_config(mock_conf,"},{"line_number":89,"context_line":"                                        \u0027769ca3fc-5924-4a44-8c1f-7efbe52fbd59\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7f96bb07_18f6da64","side":"PARENT","line":86,"updated":"2018-01-24 14:16:31.000000000","message":"This seems unrelated, please clean up in case you respin.","commit_id":"c0fd2df7ccbef6645749eef4da74cdc21be46472"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"280365e987414b104aa6285ec2d9c951ad76600c","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class poolTest(oslotest.base.BaseTestCase):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_init_from_config(self):"},{"line_number":88,"context_line":"        pool \u003d objects.Pool.from_config(mock_conf,"},{"line_number":89,"context_line":"                                        \u0027769ca3fc-5924-4a44-8c1f-7efbe52fbd59\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_84b24348","side":"PARENT","line":86,"in_reply_to":"7f96bb07_18f6da64","updated":"2018-02-01 09:14:33.000000000","message":"Done!","commit_id":"c0fd2df7ccbef6645749eef4da74cdc21be46472"}]}
