)]}'
{"shade/meta.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"30d520eea3fa8256f815e03b9cc96e1fba1bcb1a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    return get_server_ip(server, ext_tag\u003d\u0027floating\u0027, key_name\u003d\u0027public\u0027)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def get_groups_from_server(cloud, server, server_vars):"},{"line_number":57,"context_line":"    groups \u003d []"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    region \u003d cloud.region_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_4e2ec4a6","line":56,"updated":"2015-06-11 16:55:57.000000000","message":"Can we add a docstring that explains that groups can be json encoded? #notaminusone","commit_id":"908ca84b4f3771d58a31c7d68aa91e75c62f07b6"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"30d520eea3fa8256f815e03b9cc96e1fba1bcb1a","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    if group:"},{"line_number":74,"context_line":"        groups.append(group)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    meta_groups \u003d server.metadata.get(\u0027groups\u0027, None)"},{"line_number":77,"context_line":"    if meta_groups:"},{"line_number":78,"context_line":"        try:"},{"line_number":79,"context_line":"            extra_groups \u003d json.loads(meta_groups)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_2e2b8896","line":76,"updated":"2015-06-11 16:55:57.000000000","message":"s/None/[]/","commit_id":"908ca84b4f3771d58a31c7d68aa91e75c62f07b6"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"30d520eea3fa8256f815e03b9cc96e1fba1bcb1a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        try:"},{"line_number":79,"context_line":"            extra_groups \u003d json.loads(meta_groups)"},{"line_number":80,"context_line":"        except ValueError:"},{"line_number":81,"context_line":"            extra_groups \u003d meta_groups.split(\u0027,\u0027)"},{"line_number":82,"context_line":"    for extra_group in extra_groups:"},{"line_number":83,"context_line":"        if extra_group:"},{"line_number":84,"context_line":"            groups.append(extra_group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_0e17ac55","line":81,"updated":"2015-06-11 16:55:57.000000000","message":"tests fail for this, but you probably just want to shadow meta_groups rather than create extra_groups.","commit_id":"908ca84b4f3771d58a31c7d68aa91e75c62f07b6"}]}
