)]}'
{"nova/db/sqlalchemy/types.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5e4ef6f4251584b4946d140a58f540807e08a36d","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"Custom SQLAlchemy types.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova import utils"},{"line_number":21,"context_line":"from sqlalchemy.dialects import postgresql"},{"line_number":22,"context_line":"from sqlalchemy import String"},{"line_number":23,"context_line":"from sqlalchemy.types import TypeDecorator"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FADk%3D","line":20,"updated":"2013-02-11 23:05:15.000000000","message":"nova line should be separate block after the sqlalchemy lines","commit_id":"eee3c6585e3f0051250bfa0bdfd788b92769184f"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5e4ef6f4251584b4946d140a58f540807e08a36d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        return String(39).with_variant(postgresql.INET(), \u0027postgresql\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def process_bind_param(self, value, dialect):"},{"line_number":35,"context_line":"#        from pdb import set_trace; set_trace()"},{"line_number":36,"context_line":"        if dialect.name \u003d\u003d \u0027postgresql\u0027:"},{"line_number":37,"context_line":"            return value"},{"line_number":38,"context_line":"        elif utils.is_valid_ipv6(value):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FADc%3D","line":35,"updated":"2013-02-11 23:05:15.000000000","message":"remove","commit_id":"eee3c6585e3f0051250bfa0bdfd788b92769184f"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5e4ef6f4251584b4946d140a58f540807e08a36d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if dialect.name \u003d\u003d \u0027postgresql\u0027:"},{"line_number":37,"context_line":"            return value"},{"line_number":38,"context_line":"        elif utils.is_valid_ipv6(value):"},{"line_number":39,"context_line":"                return str(utils.get_shortened_ipv6(value))"},{"line_number":40,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FADY%3D","line":39,"updated":"2013-02-11 23:05:15.000000000","message":"indented too far","commit_id":"eee3c6585e3f0051250bfa0bdfd788b92769184f"}],"nova/utils.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5e4ef6f4251584b4946d140a58f540807e08a36d","unresolved":false,"context_lines":[{"line_number":901,"context_line":""},{"line_number":902,"context_line":""},{"line_number":903,"context_line":"def get_shortened_ipv6(address):"},{"line_number":904,"context_line":"    try:"},{"line_number":905,"context_line":"        addr \u003d netaddr.IPAddress(address)"},{"line_number":906,"context_line":"        return addr.ipv6()"},{"line_number":907,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FADM%3D","line":904,"updated":"2013-02-11 23:05:15.000000000","message":"don\u0027t understand why we put this in a try block to just raise the exception.","commit_id":"eee3c6585e3f0051250bfa0bdfd788b92769184f"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b7327621697109f4799b3132689b33efede88ebb","unresolved":false,"context_lines":[{"line_number":902,"context_line":""},{"line_number":903,"context_line":"def get_shortened_ipv6(address):"},{"line_number":904,"context_line":"    addr \u003d netaddr.IPAddress(address)"},{"line_number":905,"context_line":"    return addr.ipv6()"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"def is_valid_cidr(address):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2B%2F1o%3D","line":905,"updated":"2013-02-12 01:41:26.000000000","message":"one more minor nit, lets wrap this in the str() call here to it takes a string, and returns a string. It\u0027s a more expected path.","commit_id":"56c5b935fea2557bab5faa83770b9b083519d2f1"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"536770c59d547f64842d03f026aa8c20a67e74b1","unresolved":false,"context_lines":[{"line_number":902,"context_line":""},{"line_number":903,"context_line":"def get_shortened_ipv6(address):"},{"line_number":904,"context_line":"    addr \u003d netaddr.IPAddress(address)"},{"line_number":905,"context_line":"    return addr.ipv6()"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"def is_valid_cidr(address):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2B%2Fvs%3D","line":905,"in_reply_to":"AAAAM3%2F%2B%2F1o%3D","updated":"2013-02-12 03:41:04.000000000","message":"nice tip \u003d)","commit_id":"56c5b935fea2557bab5faa83770b9b083519d2f1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e12c8a72358997854f9b33ffbc045a1bf237ac5f","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        return False"},{"line_number":893,"context_line":""},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"def is_valid_ipv6(address):"},{"line_number":896,"context_line":"    try:"},{"line_number":897,"context_line":"        addr \u003d netaddr.IPAddress(address)"},{"line_number":898,"context_line":"        return addr.version \u003d\u003d 6"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2B8jQ%3D","line":895,"updated":"2013-02-13 17:28:31.000000000","message":"There are other cases of ipv6 validation functions in the code right now. Perhaps we should unify them?\n\ngrep \u0027def.*valid.*ipv6(\u0027 -r nova | wc -l\n2","commit_id":"10657e487381b6342eeae7516d94332c6eb64cba"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"aacfb4e85f57383c27727f0b79df0b1dc8986216","unresolved":false,"context_lines":[{"line_number":902,"context_line":""},{"line_number":903,"context_line":"def get_shortened_ipv6(address):"},{"line_number":904,"context_line":"    addr \u003d netaddr.IPAddress(address)"},{"line_number":905,"context_line":"    return str(addr.ipv6())"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"def is_valid_cidr(address):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2B7v0%3D","line":905,"updated":"2013-02-13 23:23:49.000000000","message":"Can you add some unit tests for these in nova/tests/test_utils.py?","commit_id":"5c4a59bce2fe64841b8e74d79c4f17a88d356dd0"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"510b3894acb9235b33aa281bd1d5381a2c2fef39","unresolved":false,"context_lines":[{"line_number":902,"context_line":""},{"line_number":903,"context_line":"def get_shortened_ipv6(address):"},{"line_number":904,"context_line":"    addr \u003d netaddr.IPAddress(address)"},{"line_number":905,"context_line":"    return str(addr.ipv6())"},{"line_number":906,"context_line":""},{"line_number":907,"context_line":""},{"line_number":908,"context_line":"def is_valid_cidr(address):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2B7hU%3D","line":905,"in_reply_to":"AAAAM3%2F%2B7v0%3D","updated":"2013-02-14 02:08:40.000000000","message":"sure!","commit_id":"5c4a59bce2fe64841b8e74d79c4f17a88d356dd0"}]}
