)]}'
{"etc/trove/trove.conf.sample":[{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"db9b1c504550974f88dec701a3e5c824c8aa69b4","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# Config option for showing the IP address that nova doles out"},{"line_number":49,"context_line":"add_addresses \u003d True"},{"line_number":50,"context_line":"network_label_regex \u003d ^private$"},{"line_number":51,"context_line":"#ip_start \u003d 10."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# Config options for enabling volume service"},{"line_number":54,"context_line":"trove_volume_support \u003d True"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAATn%2F%2F7RY%3D","line":51,"updated":"2013-10-25 05:45:11.000000000","message":"will better if operator can specify wildcard mask","commit_id":"ff3eb12e5e0aeb1be94680ff626ac159f04824c7"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f2f8680929ecc8ed8c4987579472ea083e9b4aa5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# Config option for showing the IP address that nova doles out"},{"line_number":49,"context_line":"add_addresses \u003d True"},{"line_number":50,"context_line":"network_label_regex \u003d ^private$"},{"line_number":51,"context_line":"#ip_regex \u003d ^(15.|123.)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# Config options for enabling volume service"},{"line_number":54,"context_line":"trove_volume_support \u003d True"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAATn%2F%2FnNU%3D","line":51,"updated":"2013-10-31 12:50:18.000000000","message":"do we really need to make it configurable ?","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d3a0fc1c4337a54c7696ef8dfd40b53b4581bb07","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# Config option for showing the IP address that nova doles out"},{"line_number":49,"context_line":"add_addresses \u003d True"},{"line_number":50,"context_line":"network_label_regex \u003d ^private$"},{"line_number":51,"context_line":"#ip_regex \u003d ^(15.|123.)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# Config options for enabling volume service"},{"line_number":54,"context_line":"trove_volume_support \u003d True"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAATn%2F%2Fj00%3D","line":51,"in_reply_to":"AAAATn%2F%2FmSk%3D","updated":"2013-11-01 10:54:12.000000000","message":"Is there any way to generalize regexp and do not externalize configuration into config file?","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"82f2ab25e75b9ca4bf7ee734ed37df3188a904bd","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# Config option for showing the IP address that nova doles out"},{"line_number":49,"context_line":"add_addresses \u003d True"},{"line_number":50,"context_line":"network_label_regex \u003d ^private$"},{"line_number":51,"context_line":"#ip_regex \u003d ^(15.|123.)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# Config options for enabling volume service"},{"line_number":54,"context_line":"trove_volume_support \u003d True"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAATn%2F%2FmSk%3D","line":51,"in_reply_to":"AAAATn%2F%2FnNU%3D","updated":"2013-10-31 16:52:13.000000000","message":"please see my last comment :)","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"}],"etc/trove/trove.conf.test":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f2f8680929ecc8ed8c4987579472ea083e9b4aa5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"# Config option for showing the IP address that nova doles out"},{"line_number":73,"context_line":"add_addresses \u003d True"},{"line_number":74,"context_line":"network_label_regex \u003d ^private$"},{"line_number":75,"context_line":"ip_regex \u003d ^(15.|123.)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"# Config options for enabling volume service"},{"line_number":78,"context_line":"trove_volume_support \u003d True"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAATn%2F%2FnNQ%3D","line":75,"updated":"2013-10-31 12:50:18.000000000","message":"same","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"82f2ab25e75b9ca4bf7ee734ed37df3188a904bd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"# Config option for showing the IP address that nova doles out"},{"line_number":73,"context_line":"add_addresses \u003d True"},{"line_number":74,"context_line":"network_label_regex \u003d ^private$"},{"line_number":75,"context_line":"ip_regex \u003d ^(15.|123.)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"# Config options for enabling volume service"},{"line_number":78,"context_line":"trove_volume_support \u003d True"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"AAAATn%2F%2FmSg%3D","line":75,"in_reply_to":"AAAATn%2F%2FnNQ%3D","updated":"2013-10-31 16:52:13.000000000","message":"please see my last comment :)","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"}],"trove/common/cfg.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f2f8680929ecc8ed8c4987579472ea083e9b4aa5","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_tenant_name\u0027, default\u003d\u0027\u0027,"},{"line_number":202,"context_line":"               help\u003d\"Admin tenant used to connect to Nova\", secret\u003dTrue),"},{"line_number":203,"context_line":"    cfg.StrOpt(\u0027network_label_regex\u0027, default\u003d\u0027^private$\u0027),"},{"line_number":204,"context_line":"    cfg.StrOpt(\u0027ip_regex\u0027, default\u003dNone),"},{"line_number":205,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":206,"context_line":"               help\u003d\"Path to folder with cloudinit scripts\"),"},{"line_number":207,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FnNE%3D","line":204,"updated":"2013-10-31 12:50:18.000000000","message":"Why could just make it default and do not mantion it in any configs ?","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d3a0fc1c4337a54c7696ef8dfd40b53b4581bb07","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_tenant_name\u0027, default\u003d\u0027\u0027,"},{"line_number":202,"context_line":"               help\u003d\"Admin tenant used to connect to Nova\", secret\u003dTrue),"},{"line_number":203,"context_line":"    cfg.StrOpt(\u0027network_label_regex\u0027, default\u003d\u0027^private$\u0027),"},{"line_number":204,"context_line":"    cfg.StrOpt(\u0027ip_regex\u0027, default\u003dNone),"},{"line_number":205,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":206,"context_line":"               help\u003d\"Path to folder with cloudinit scripts\"),"},{"line_number":207,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2Fj0w%3D","line":204,"in_reply_to":"AAAATn%2F%2FmSo%3D","updated":"2013-11-01 10:54:12.000000000","message":"I wonder if it could be commonto any network configuration ?","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"82f2ab25e75b9ca4bf7ee734ed37df3188a904bd","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_tenant_name\u0027, default\u003d\u0027\u0027,"},{"line_number":202,"context_line":"               help\u003d\"Admin tenant used to connect to Nova\", secret\u003dTrue),"},{"line_number":203,"context_line":"    cfg.StrOpt(\u0027network_label_regex\u0027, default\u003d\u0027^private$\u0027),"},{"line_number":204,"context_line":"    cfg.StrOpt(\u0027ip_regex\u0027, default\u003dNone),"},{"line_number":205,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":206,"context_line":"               help\u003d\"Path to folder with cloudinit scripts\"),"},{"line_number":207,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2FmSo%3D","line":204,"in_reply_to":"AAAATn%2F%2FnNE%3D","updated":"2013-10-31 16:52:13.000000000","message":"I believe that everyone\u0027s networking setup could be different so the thought was to allow for some flexibility.\n\nIf I were to set a default here without setting it in the property file that might be an argument for just using a constant in the code.","commit_id":"d93b7708bbf882412872eb1c0ebfca53a9ae025e"}],"trove/instance/views.py":[{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"db9b1c504550974f88dec701a3e5c824c8aa69b4","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, start):"},{"line_number":41,"context_line":"    return [ip for ip in ips if not ip.startswith(start)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceView(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7Rc%3D","line":41,"updated":"2013-10-25 05:45:11.000000000","message":"can you filter it by wildcard mask?\ni think will more flexible","commit_id":"ff3eb12e5e0aeb1be94680ff626ac159f04824c7"},{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"db9b1c504550974f88dec701a3e5c824c8aa69b4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            ip \u003d get_ip_address(self.instance.addresses)"},{"line_number":97,"context_line":"            if ip is not None and len(ip) \u003e 0:"},{"line_number":98,"context_line":"                # removes ip addresses that match the regexp pattern"},{"line_number":99,"context_line":"                if CONF.ip_start is not None and CONF.ip_start !\u003d \u0027\u0027:"},{"line_number":100,"context_line":"                    ip \u003d filter_ips(ip, CONF.ip_start)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"                result[\u0027instance\u0027][\u0027ip\u0027] \u003d ip"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7Ro%3D","line":99,"updated":"2013-10-25 05:45:11.000000000","message":"i think you can use \"if CONF.ip_start:\"\nit will false even if string is \u0027\u0027","commit_id":"ff3eb12e5e0aeb1be94680ff626ac159f04824c7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"93aac49cb85a565c4ed4f670fa918f371134626f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            ip \u003d get_ip_address(self.instance.addresses)"},{"line_number":97,"context_line":"            if ip is not None and len(ip) \u003e 0:"},{"line_number":98,"context_line":"                # removes ip addresses that match the regexp pattern"},{"line_number":99,"context_line":"                if CONF.ip_regexp:"},{"line_number":100,"context_line":"                    ip \u003d filter_ips(ip, CONF.ip_regexp)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"                result[\u0027instance\u0027][\u0027ip\u0027] \u003d ip"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FzSw%3D","line":99,"updated":"2013-10-28 20:42:05.000000000","message":"I think you meant CONF.ip_regex","commit_id":"8fea0bf303bc149609396c235769a4abbfff80b2"},{"author":{"_account_id":8188,"name":"Ilya Sviridov","email":"sviridov.ilya@gmail.com","username":"isviridov"},"change_message_id":"4be2205898bd00548e2605c0939c0f2e4ac74bd9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    return IPs"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if not re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FzH4%3D","line":40,"updated":"2013-10-28 21:27:42.000000000","message":"Do we really need one more filtering?\nThe network_label_regex should give us the only one ip.\n\nLooks like a bug, and should be fixed instead of adding one more filtering","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":8188,"name":"Ilya Sviridov","email":"sviridov.ilya@gmail.com","username":"isviridov"},"change_message_id":"ef95c4ebee8c11ba43412ef17edd9456d5dd1766","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    return IPs"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if not re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fuzs%3D","line":40,"in_reply_to":"AAAATn%2F%2Fy9k%3D","updated":"2013-10-29 19:06:50.000000000","message":"For case with several ips in one network, it can be usefull.","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"7e01bae3dea218ffcd8d3b4f58af74b38e23485c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    return IPs"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if not re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FyrI%3D","line":40,"in_reply_to":"AAAATn%2F%2FzH4%3D","updated":"2013-10-29 00:14:24.000000000","message":"This offers more flexibility to filter out ip addresses.","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"53268483296ec113efe34e02735be4de3d4c597b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    return IPs"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if not re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fy9k%3D","line":40,"in_reply_to":"AAAATn%2F%2FzH4%3D","updated":"2013-10-28 22:20:02.000000000","message":"Try turning on \u0027auto_assign_floating_ip\u0027 in Nova.  You can have \u003e 1 IP per network.","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"f2c858617ce44ec24f1e78f720347abea09461a2","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if not re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceView(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FuTM%3D","line":41,"updated":"2013-10-29 21:44:46.000000000","message":"Should we do it the other way around, where the regex defines the IPs we want instead of the IPs we dont want?\n\nIm saying this because the networ_label_regex defines the network label we want. Just to keep it consistent","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"5b42d75c12e7949778793409563b4c3dcabcfc5f","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if not re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceView(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FuIQ%3D","line":41,"in_reply_to":"AAAATn%2F%2FuTM%3D","updated":"2013-10-29 22:38:03.000000000","message":"yeah we can do that.  filter in.","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"840cfc1ccd844d2511e12840927f653edee9ca20","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            if ip is not None and len(ip) \u003e 0:"},{"line_number":98,"context_line":"                # removes ip addresses that match the regexp pattern"},{"line_number":99,"context_line":"                if CONF.ip_regex:"},{"line_number":100,"context_line":"                    ip \u003d filter_ips(ip, CONF.ip_regex)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"                result[\u0027instance\u0027][\u0027ip\u0027] \u003d ip"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FzJk%3D","line":100,"updated":"2013-10-28 21:22:42.000000000","message":"Maybe it\u0027s worth checking that ip isn\u0027t empty before we assign result[\u0027instance\u0027][\u0027ip\u0027] to an empty list.","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"7e01bae3dea218ffcd8d3b4f58af74b38e23485c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            if ip is not None and len(ip) \u003e 0:"},{"line_number":98,"context_line":"                # removes ip addresses that match the regexp pattern"},{"line_number":99,"context_line":"                if CONF.ip_regex:"},{"line_number":100,"context_line":"                    ip \u003d filter_ips(ip, CONF.ip_regex)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"                result[\u0027instance\u0027][\u0027ip\u0027] \u003d ip"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FyrQ%3D","line":100,"in_reply_to":"AAAATn%2F%2FzJk%3D","updated":"2013-10-29 00:14:24.000000000","message":"agreed, will add a check for empty","commit_id":"55b789c52de8b9f34830dd0c289bc48f594135f1"},{"author":{"_account_id":8259,"name":"Andrey Shestakov","email":"ashestakov@mirantis.com","username":"ashestakov"},"change_message_id":"761d26b34662d8a68b5fb757bf3bf1d3aae910db","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceView(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fsmg%3D","line":41,"updated":"2013-10-30 10:10:36.000000000","message":"i think \"match\" should be used","commit_id":"35194d960606896a6b0e0422c3708689f8739112"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"ceb9f2b75bf4e51ff311f23a957122e7374808f8","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceView(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fqdk%3D","line":41,"in_reply_to":"AAAATn%2F%2FqrA%3D","updated":"2013-10-30 17:36:07.000000000","message":"eh, after thinking it over I think I gonna keep it like this.  I think it will be a bit over kill for what we are trying to do.\n\nIf we find that this list of IPs starts to get huge than I think it would make sense to refactor at that point.","commit_id":"35194d960606896a6b0e0422c3708689f8739112"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"ecf109739acc41eee24086e091ae64f6fdd76fa3","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def filter_ips(ips, regex):"},{"line_number":41,"context_line":"    return [ip for ip in ips if re.search(regex, ip)]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class InstanceView(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FqrA%3D","line":41,"in_reply_to":"AAAATn%2F%2Fsmg%3D","updated":"2013-10-30 16:52:18.000000000","message":"you mean compiled regexp?  sure we could do that.\nwhy not.","commit_id":"35194d960606896a6b0e0422c3708689f8739112"},{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"ceb9f2b75bf4e51ff311f23a957122e7374808f8","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if CONF.add_addresses:"},{"line_number":96,"context_line":"            ip \u003d get_ip_address(self.instance.addresses)"},{"line_number":97,"context_line":"            if ip is not None and len(ip) \u003e 0:"},{"line_number":98,"context_line":"                # removes ip addresses that match the regexp pattern"},{"line_number":99,"context_line":"                if CONF.ip_regex:"},{"line_number":100,"context_line":"                    ip \u003d filter_ips(ip, CONF.ip_regex)"},{"line_number":101,"context_line":"                if len(ip) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FqdQ%3D","line":98,"updated":"2013-10-30 17:36:07.000000000","message":"I need to fix this comment now that we have reversed the logic.","commit_id":"35194d960606896a6b0e0422c3708689f8739112"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"416b14c17584480b8a58658e7b917a4d34b07f48","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if CONF.add_addresses:"},{"line_number":96,"context_line":"            ip \u003d get_ip_address(self.instance.addresses)"},{"line_number":97,"context_line":"            if ip is not None and len(ip) \u003e 0:"},{"line_number":98,"context_line":"                # removes ip addresses that match the regexp pattern"},{"line_number":99,"context_line":"                if CONF.ip_regex:"},{"line_number":100,"context_line":"                    ip \u003d filter_ips(ip, CONF.ip_regex)"},{"line_number":101,"context_line":"                if len(ip) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FqeA%3D","line":98,"updated":"2013-10-30 17:33:22.000000000","message":"I think the intent might be to keep addresses that match the pattern. Can we change this comment to reflect that.","commit_id":"35194d960606896a6b0e0422c3708689f8739112"}],"trove/tests/unittests/instance/test_instance_views.py":[{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"93aac49cb85a565c4ed4f670fa918f371134626f","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def test_filter_ips(self):"},{"line_number":64,"context_line":"        CONF.network_label_regex \u003d \u0027.*\u0027"},{"line_number":65,"context_line":"        CONF.ip_regexp \u003d \u0027^10.\u0027"},{"line_number":66,"context_line":"        ip \u003d get_ip_address(self.addresses)"},{"line_number":67,"context_line":"        ip \u003d filter_ips(ip, CONF.ip_regexp)"},{"line_number":68,"context_line":"        self.assertTrue(len(ip) \u003d\u003d 2)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FzSs%3D","line":65,"updated":"2013-10-28 20:42:05.000000000","message":"You probably meant CONF.ip_regex judging from cfg.py","commit_id":"8fea0bf303bc149609396c235769a4abbfff80b2"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"93aac49cb85a565c4ed4f670fa918f371134626f","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        CONF.network_label_regex \u003d \u0027.*\u0027"},{"line_number":65,"context_line":"        CONF.ip_regexp \u003d \u0027^10.\u0027"},{"line_number":66,"context_line":"        ip \u003d get_ip_address(self.addresses)"},{"line_number":67,"context_line":"        ip \u003d filter_ips(ip, CONF.ip_regexp)"},{"line_number":68,"context_line":"        self.assertTrue(len(ip) \u003d\u003d 2)"},{"line_number":69,"context_line":"        self.assertTrue(\u0027123.123.123.123\u0027 in ip)"},{"line_number":70,"context_line":"        self.assertTrue(\u002715.123.123.123\u0027 in ip)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2FzSo%3D","line":67,"updated":"2013-10-28 20:42:05.000000000","message":"and here","commit_id":"8fea0bf303bc149609396c235769a4abbfff80b2"}]}
