)]}'
{"aodh/evaluator/loadbalancer.py":[{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"813c7a757647ad2bf6c544241916e0d8daa0731d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            ret \u003d self.lb_client.member_list(pool_id)"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.warning(\"Failed to communicate with load balancing service, \""},{"line_number":75,"context_line":"                        \"error: %s\", str(e))"},{"line_number":76,"context_line":"            raise threshold.InsufficientDataError("},{"line_number":77,"context_line":"                \u0027failed to communicate with load balancing service\u0027,"},{"line_number":78,"context_line":"                []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_459b5ec8","line":75,"range":{"start_line":75,"start_character":37,"end_line":75,"end_character":40},"updated":"2019-04-16 04:56:18.000000000","message":"shall we use six.text_type to avoid some unkown unicode error","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"85fa52022c4e25f0682afae0c8d9e5f8b0b672ca","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            ret \u003d self.lb_client.member_list(pool_id)"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.warning(\"Failed to communicate with load balancing service, \""},{"line_number":75,"context_line":"                        \"error: %s\", str(e))"},{"line_number":76,"context_line":"            raise threshold.InsufficientDataError("},{"line_number":77,"context_line":"                \u0027failed to communicate with load balancing service\u0027,"},{"line_number":78,"context_line":"                []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_b0eb5eda","line":75,"range":{"start_line":75,"start_character":37,"end_line":75,"end_character":40},"in_reply_to":"3fce034c_459b5ec8","updated":"2019-04-16 06:12:05.000000000","message":"hmm...I think it\u0027s safe to use str() both in python 2 and python 3, could you please show me some example that str() will cause problems?","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"3669ba45b6c6faf795391b8a5bebee635b5e784f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            ret \u003d self.lb_client.member_list(pool_id)"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.warning(\"Failed to communicate with load balancing service, \""},{"line_number":75,"context_line":"                        \"error: %s\", str(e))"},{"line_number":76,"context_line":"            raise threshold.InsufficientDataError("},{"line_number":77,"context_line":"                \u0027failed to communicate with load balancing service\u0027,"},{"line_number":78,"context_line":"                []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_3d3bc6eb","line":75,"range":{"start_line":75,"start_character":37,"end_line":75,"end_character":40},"in_reply_to":"3fce034c_4b84cf5e","updated":"2019-04-16 08:34:52.000000000","message":"I agree with you, but we should use six.string_types according to https://wiki.openstack.org/wiki/Python3#Common_patterns","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"5705e29823154271d235e5f8a917ac0f4bd34780","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            ret \u003d self.lb_client.member_list(pool_id)"},{"line_number":73,"context_line":"        except Exception as e:"},{"line_number":74,"context_line":"            LOG.warning(\"Failed to communicate with load balancing service, \""},{"line_number":75,"context_line":"                        \"error: %s\", str(e))"},{"line_number":76,"context_line":"            raise threshold.InsufficientDataError("},{"line_number":77,"context_line":"                \u0027failed to communicate with load balancing service\u0027,"},{"line_number":78,"context_line":"                []"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_4b84cf5e","line":75,"range":{"start_line":75,"start_character":37,"end_line":75,"end_character":40},"in_reply_to":"3fce034c_b0eb5eda","updated":"2019-04-16 07:04:53.000000000","message":"please check this bug: https://bugs.launchpad.net/nova/+bug/1580728","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"813c7a757647ad2bf6c544241916e0d8daa0731d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            now \u003d timeutils.utcnow()"},{"line_number":93,"context_line":"            t \u003d self.conf.member_creation_time"},{"line_number":94,"context_line":"            if now - created_time \u003c datetime.timedelta(seconds\u003dt):"},{"line_number":95,"context_line":"                LOG.debug(\"Ignore member which was created within %ss\", t)"},{"line_number":96,"context_line":"                continue"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            if m[\"admin_state_up\"] and m[\"operating_status\"] \u003d\u003d \"ERROR\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_e5928a9f","line":95,"range":{"start_line":95,"start_character":68,"end_line":95,"end_character":69},"updated":"2019-04-16 04:56:18.000000000","message":"extra s?","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"5705e29823154271d235e5f8a917ac0f4bd34780","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            now \u003d timeutils.utcnow()"},{"line_number":93,"context_line":"            t \u003d self.conf.member_creation_time"},{"line_number":94,"context_line":"            if now - created_time \u003c datetime.timedelta(seconds\u003dt):"},{"line_number":95,"context_line":"                LOG.debug(\"Ignore member which was created within %ss\", t)"},{"line_number":96,"context_line":"                continue"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            if m[\"admin_state_up\"] and m[\"operating_status\"] \u003d\u003d \"ERROR\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_6b874b63","line":95,"range":{"start_line":95,"start_character":68,"end_line":95,"end_character":69},"in_reply_to":"3fce034c_70bf36d0","updated":"2019-04-16 07:04:53.000000000","message":"got it","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"85fa52022c4e25f0682afae0c8d9e5f8b0b672ca","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            now \u003d timeutils.utcnow()"},{"line_number":93,"context_line":"            t \u003d self.conf.member_creation_time"},{"line_number":94,"context_line":"            if now - created_time \u003c datetime.timedelta(seconds\u003dt):"},{"line_number":95,"context_line":"                LOG.debug(\"Ignore member which was created within %ss\", t)"},{"line_number":96,"context_line":"                continue"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            if m[\"admin_state_up\"] and m[\"operating_status\"] \u003d\u003d \"ERROR\":"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_70bf36d0","line":95,"range":{"start_line":95,"start_character":68,"end_line":95,"end_character":69},"in_reply_to":"3fce034c_e5928a9f","updated":"2019-04-16 06:12:05.000000000","message":"\"%ss\" % 30: 30s","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"bf87a68628dd2ab71cadd6ae797dc21b1465346b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            ret \u003d self.lb_client.member_list(pool_id)"},{"line_number":74,"context_line":"        except Exception as e:"},{"line_number":75,"context_line":"            LOG.warning(\"Failed to communicate with load balancing service, \""},{"line_number":76,"context_line":"                        \"error: %s\", six.string_types(e))"},{"line_number":77,"context_line":"            raise threshold.InsufficientDataError("},{"line_number":78,"context_line":"                \u0027failed to communicate with load balancing service\u0027,"},{"line_number":79,"context_line":"                []"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_405ca97d","line":76,"range":{"start_line":76,"start_character":41,"end_line":76,"end_character":53},"updated":"2019-04-16 08:55:36.000000000","message":"string_types is \u003ctype \u0027basestring\u0027\u003e can not convert object\n\n\u003e\u003e\u003e test_str \u003d \u0027this is a test\u0027\n\u003e\u003e\u003e import six\n\u003e\u003e\u003e six.string_types(test_str)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nTypeError: \u0027tuple\u0027 object is not callable\n\u003e\u003e\u003e six.string_types\n(\u003ctype \u0027basestring\u0027\u003e,)\n\u003e\u003e\u003e six.text_type(test_str)\nu\u0027this is a test\u0027","commit_id":"d81eee6e312ea1d0380231ca4c59e8f1ee1c146d"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"dbfbf7005922e862bd44f0b6e22f62927cb2a2b4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            ret \u003d self.lb_client.member_list(pool_id)"},{"line_number":74,"context_line":"        except Exception as e:"},{"line_number":75,"context_line":"            LOG.warning(\"Failed to communicate with load balancing service, \""},{"line_number":76,"context_line":"                        \"error: %s\", six.string_types(e))"},{"line_number":77,"context_line":"            raise threshold.InsufficientDataError("},{"line_number":78,"context_line":"                \u0027failed to communicate with load balancing service\u0027,"},{"line_number":79,"context_line":"                []"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fce034c_93798994","line":76,"range":{"start_line":76,"start_character":41,"end_line":76,"end_character":53},"in_reply_to":"3fce034c_405ca97d","updated":"2019-04-16 09:13:21.000000000","message":"Yeah, six.string_types can\u0027t be called :-(","commit_id":"d81eee6e312ea1d0380231ca4c59e8f1ee1c146d"}],"aodh/keystone_client.py":[{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"813c7a757647ad2bf6c544241916e0d8daa0731d","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def url_for(conf, **kwargs):"},{"line_number":92,"context_line":"    sess \u003d get_session(conf)"},{"line_number":93,"context_line":"    return sess.get_endpoint(**kwargs)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_e51cca14","line":93,"range":{"start_line":93,"start_character":11,"end_line":93,"end_character":38},"updated":"2019-04-16 04:56:18.000000000","message":"Do we need a exception here?","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"3669ba45b6c6faf795391b8a5bebee635b5e784f","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def url_for(conf, **kwargs):"},{"line_number":92,"context_line":"    sess \u003d get_session(conf)"},{"line_number":93,"context_line":"    return sess.get_endpoint(**kwargs)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_dd540224","line":93,"range":{"start_line":93,"start_character":11,"end_line":93,"end_character":38},"in_reply_to":"3fce034c_4bd28f5e","updated":"2019-04-16 08:34:52.000000000","message":"Most of the functions(except `delete_trust_id()`) in this file don\u0027t capture exceptions, which relies on the outside module. Catching exception here still needs outside catch.","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"85fa52022c4e25f0682afae0c8d9e5f8b0b672ca","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def url_for(conf, **kwargs):"},{"line_number":92,"context_line":"    sess \u003d get_session(conf)"},{"line_number":93,"context_line":"    return sess.get_endpoint(**kwargs)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_f08fa62b","line":93,"range":{"start_line":93,"start_character":11,"end_line":93,"end_character":38},"in_reply_to":"3fce034c_e51cca14","updated":"2019-04-16 06:12:05.000000000","message":"The exception is captured in L73 https://review.openstack.org/#/c/652622/3/aodh/evaluator/loadbalancer.py","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"5705e29823154271d235e5f8a917ac0f4bd34780","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def url_for(conf, **kwargs):"},{"line_number":92,"context_line":"    sess \u003d get_session(conf)"},{"line_number":93,"context_line":"    return sess.get_endpoint(**kwargs)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_4bd28f5e","line":93,"range":{"start_line":93,"start_character":11,"end_line":93,"end_character":38},"in_reply_to":"3fce034c_f08fa62b","updated":"2019-04-16 07:04:53.000000000","message":"I mean shall we capture the EndpointNotFound error separately? But I am ok with capture all the exception once like L73.","commit_id":"33fbd29b428fc6afa744c04735f62d1a934ecbbb"}],"aodh/opts.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"d992a0e18039c991633f38f2468b91b921b3ae4f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import aodh.evaluator.event"},{"line_number":24,"context_line":"import aodh.evaluator.gnocchi"},{"line_number":25,"context_line":"import aodh.evaluator.loadbalancer"},{"line_number":26,"context_line":"import aodh.evaluator.threshold"},{"line_number":27,"context_line":"import aodh.event"},{"line_number":28,"context_line":"import aodh.keystone_client"},{"line_number":29,"context_line":"import aodh.notifier.rest"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_5e9316fb","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":31},"updated":"2019-04-17 03:08:41.000000000","message":"I wonder why this is not added in the previous version but it still passes the test?","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"7e504d26c4684c984ca0fbeb453e8436eafaf0f0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import aodh.evaluator.event"},{"line_number":24,"context_line":"import aodh.evaluator.gnocchi"},{"line_number":25,"context_line":"import aodh.evaluator.loadbalancer"},{"line_number":26,"context_line":"import aodh.evaluator.threshold"},{"line_number":27,"context_line":"import aodh.event"},{"line_number":28,"context_line":"import aodh.keystone_client"},{"line_number":29,"context_line":"import aodh.notifier.rest"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_14a24daf","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":31},"in_reply_to":"3fce034c_39d66451","updated":"2019-04-17 04:55:57.000000000","message":"okie. just wonder why.","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"1a98ec3285cef00a26e027eefc0ccca82976d0f2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import aodh.evaluator.event"},{"line_number":24,"context_line":"import aodh.evaluator.gnocchi"},{"line_number":25,"context_line":"import aodh.evaluator.loadbalancer"},{"line_number":26,"context_line":"import aodh.evaluator.threshold"},{"line_number":27,"context_line":"import aodh.event"},{"line_number":28,"context_line":"import aodh.keystone_client"},{"line_number":29,"context_line":"import aodh.notifier.rest"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_39d66451","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":31},"in_reply_to":"3fce034c_5e9316fb","updated":"2019-04-17 03:18:53.000000000","message":"Dunno, but without this, the test failed.","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"d0c6a3f3b9f984335360b1675df1daf419b102db","unresolved":false,"context_lines":[{"line_number":38,"context_line":"         itertools.chain("},{"line_number":39,"context_line":"             aodh.evaluator.OPTS,"},{"line_number":40,"context_line":"             aodh.evaluator.event.OPTS,"},{"line_number":41,"context_line":"             aodh.evaluator.threshold.OPTS,"},{"line_number":42,"context_line":"             aodh.evaluator.loadbalancer.OPTS,"},{"line_number":43,"context_line":"             aodh.notifier.rest.OPTS,"},{"line_number":44,"context_line":"             aodh.queue.OPTS,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_79b4ec35","line":41,"range":{"start_line":41,"start_character":13,"end_line":41,"end_character":37},"updated":"2019-04-17 03:13:06.000000000","message":"Hi, Trinh Nguyen, here use it","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"7e504d26c4684c984ca0fbeb453e8436eafaf0f0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"         itertools.chain("},{"line_number":39,"context_line":"             aodh.evaluator.OPTS,"},{"line_number":40,"context_line":"             aodh.evaluator.event.OPTS,"},{"line_number":41,"context_line":"             aodh.evaluator.threshold.OPTS,"},{"line_number":42,"context_line":"             aodh.evaluator.loadbalancer.OPTS,"},{"line_number":43,"context_line":"             aodh.notifier.rest.OPTS,"},{"line_number":44,"context_line":"             aodh.queue.OPTS,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_74c5d15a","line":41,"range":{"start_line":41,"start_character":13,"end_line":41,"end_character":37},"in_reply_to":"3fce034c_79b4ec35","updated":"2019-04-17 04:55:57.000000000","message":"I know. Just don\u0027t understand why it passed the test without importing the module in the old code.","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"}],"requirements.txt":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"d992a0e18039c991633f38f2468b91b921b3ae4f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"cotyledon"},{"line_number":36,"context_line":"keystoneauth1\u003e\u003d2.1"},{"line_number":37,"context_line":"debtcollector\u003e\u003d1.2.0  # Apache-2.0"},{"line_number":38,"context_line":"python-octaviaclient\u003e\u003d1.8.0"},{"line_number":39,"context_line":"python-dateutil  # BSD"}],"source_content_type":"text/plain","patch_set":5,"id":"3fce034c_591d7064","line":38,"updated":"2019-04-17 03:08:41.000000000","message":"# Apache-2.0 ?","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"0810a3ea377813ce2693e655b92609461ce93a2f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"cotyledon"},{"line_number":36,"context_line":"keystoneauth1\u003e\u003d2.1"},{"line_number":37,"context_line":"debtcollector\u003e\u003d1.2.0  # Apache-2.0"},{"line_number":38,"context_line":"python-octaviaclient\u003e\u003d1.8.0"},{"line_number":39,"context_line":"python-dateutil  # BSD"}],"source_content_type":"text/plain","patch_set":5,"id":"3fce034c_79694c89","line":38,"in_reply_to":"3fce034c_396424b9","updated":"2019-04-17 03:21:25.000000000","message":"yeah, this is already have, I mean, the extra file like: https://github.com/openstack/nova/blob/master/lower-constraints.txt , but not in this patch and bp.","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"d0c6a3f3b9f984335360b1675df1daf419b102db","unresolved":false,"context_lines":[{"line_number":35,"context_line":"cotyledon"},{"line_number":36,"context_line":"keystoneauth1\u003e\u003d2.1"},{"line_number":37,"context_line":"debtcollector\u003e\u003d1.2.0  # Apache-2.0"},{"line_number":38,"context_line":"python-octaviaclient\u003e\u003d1.8.0"},{"line_number":39,"context_line":"python-dateutil  # BSD"}],"source_content_type":"text/plain","patch_set":5,"id":"3fce034c_f9f69cf9","line":38,"in_reply_to":"3fce034c_591d7064","updated":"2019-04-17 03:13:06.000000000","message":"another thing but not include in this patch, I think we need a lower-constraints.txt to constraint the lowest requirements version.","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"1a98ec3285cef00a26e027eefc0ccca82976d0f2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"cotyledon"},{"line_number":36,"context_line":"keystoneauth1\u003e\u003d2.1"},{"line_number":37,"context_line":"debtcollector\u003e\u003d1.2.0  # Apache-2.0"},{"line_number":38,"context_line":"python-octaviaclient\u003e\u003d1.8.0"},{"line_number":39,"context_line":"python-dateutil  # BSD"}],"source_content_type":"text/plain","patch_set":5,"id":"3fce034c_f9cf7cad","line":38,"in_reply_to":"3fce034c_591d7064","updated":"2019-04-17 03:18:53.000000000","message":"is it necessary?","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"91d8a0318ba521db612331a3e6540a6214c5a65c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"cotyledon"},{"line_number":36,"context_line":"keystoneauth1\u003e\u003d2.1"},{"line_number":37,"context_line":"debtcollector\u003e\u003d1.2.0  # Apache-2.0"},{"line_number":38,"context_line":"python-octaviaclient\u003e\u003d1.8.0"},{"line_number":39,"context_line":"python-dateutil  # BSD"}],"source_content_type":"text/plain","patch_set":5,"id":"3fce034c_f9b53cce","line":38,"in_reply_to":"3fce034c_79694c89","updated":"2019-04-17 03:38:34.000000000","message":"Yeah, Aodh is still using minimum required versions in requirement file, which is not recommended in the community, it did the same things as lower-constraints.txt is supposed to do before the lower-constraints.txt was introduced to the whole community. \n\nWe could add that lower-constraints.txt in a seprate patch and add the requirements check job in Aodh CI. However, personally I don\u0027t think lower-constraints.txt is that useful as upper-constraints.txt, especially in the devstack installation.","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"1a98ec3285cef00a26e027eefc0ccca82976d0f2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"cotyledon"},{"line_number":36,"context_line":"keystoneauth1\u003e\u003d2.1"},{"line_number":37,"context_line":"debtcollector\u003e\u003d1.2.0  # Apache-2.0"},{"line_number":38,"context_line":"python-octaviaclient\u003e\u003d1.8.0"},{"line_number":39,"context_line":"python-dateutil  # BSD"}],"source_content_type":"text/plain","patch_set":5,"id":"3fce034c_396424b9","line":38,"in_reply_to":"3fce034c_f9f69cf9","updated":"2019-04-17 03:18:53.000000000","message":"python-octaviaclient\u003e\u003d1.8.0 already has the constraint, doesn\u0027t it?","commit_id":"018b7d45feca73ebf6e79689a50be1b2b591723b"}]}
