)]}'
{"designate/scheduler/filters/attribute_filter.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"3a6985aa4a04bd163798022adc16d99dbfc6f362","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class AttributeFilter(Filter):"},{"line_number":24,"context_line":"    \"\"\"This allows users top choose the pool by supplying hints to this filter."},{"line_number":25,"context_line":"    These are provided as attributes as part of the zone object provided at"},{"line_number":26,"context_line":"    zone create time."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_96070a81","line":24,"range":{"start_line":24,"start_character":25,"end_line":24,"end_character":28},"updated":"2016-04-21 12:32:18.000000000","message":"nit: s/top/to/","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"46837fe5fbef11e6e86fdabf7e9d8681abfc5f7f","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        for attr in zone.attributes:"},{"line_number":68,"context_line":"            request_keys.add(attr.key)"},{"line_number":69,"context_line":"            request_values[attr.key] \u003d attr.value"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        del_pools \u003d set()"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_a8ec5f2a","line":69,"updated":"2016-04-21 13:56:56.000000000","message":"Done","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"3a6985aa4a04bd163798022adc16d99dbfc6f362","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        request_keys \u003d set()"},{"line_number":65,"context_line":"        request_values \u003d {}"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        for attr in zone.attributes:"},{"line_number":68,"context_line":"            request_keys.add(attr.key)"},{"line_number":69,"context_line":"            request_values[attr.key] \u003d attr.value"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        del_pools \u003d set()"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_16213ab5","line":69,"range":{"start_line":67,"start_character":8,"end_line":69,"end_character":49},"updated":"2016-04-21 12:32:18.000000000","message":"This kinda feels like our AttributeObject mixin is incomplete, we shouldn\u0027t have to work with `[{key: MyKey, value: MyValue}, .. ]` style lists, it should look+feel like `{MyKey: MyValue, .. }` from outside the Objects code?","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"46837fe5fbef11e6e86fdabf7e9d8681abfc5f7f","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                if request_values[key] in self.TRUTHY_VALUES:"},{"line_number":109,"context_line":"                    request_values[key] \u003d True"},{"line_number":110,"context_line":"                if request_values[key] in self.FALSEY_VALUES:"},{"line_number":111,"context_line":"                    request_values[key] \u003d False"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"                if not p_values[key] \u003d\u003d request_values[key]:"},{"line_number":114,"context_line":"                    del_pools.add(i)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_08f2b306","line":111,"updated":"2016-04-21 13:56:56.000000000","message":"Done","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"3a6985aa4a04bd163798022adc16d99dbfc6f362","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            for key in six.iterkeys(request_values):"},{"line_number":100,"context_line":"                LOG.debug(\"Checking value of %s for %s\", key, pool)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"                # Get around the wierd YAML import, and that attributes are"},{"line_number":103,"context_line":"                # key: value text strings."},{"line_number":104,"context_line":"                if p_values[key] in self.TRUTHY_VALUES:"},{"line_number":105,"context_line":"                    p_values[key] \u003d True"},{"line_number":106,"context_line":"                if p_values[key] in self.FALSEY_VALUES:"},{"line_number":107,"context_line":"                    p_values[key] \u003d False"},{"line_number":108,"context_line":"                if request_values[key] in self.TRUTHY_VALUES:"},{"line_number":109,"context_line":"                    request_values[key] \u003d True"},{"line_number":110,"context_line":"                if request_values[key] in self.FALSEY_VALUES:"},{"line_number":111,"context_line":"                    request_values[key] \u003d False"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"                if not p_values[key] \u003d\u003d request_values[key]:"},{"line_number":114,"context_line":"                    del_pools.add(i)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_593003e9","line":111,"range":{"start_line":102,"start_character":16,"end_line":111,"end_character":47},"updated":"2016-04-21 12:32:18.000000000","message":"We should probably use oslo_utils.strutils\u0027s  bool_from_string() method, which covers these + more. e.g. \"TrUe\" - which while silly and odd to use, will end up being filed as a bug at some point :)","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"3a6985aa4a04bd163798022adc16d99dbfc6f362","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        pool_list \u003d [i for j, i in enumerate(pools) if j not in del_pools]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        pools \u003d PoolAttributeList(objects\u003dpool_list)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        return pools"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_99029b08","line":128,"range":{"start_line":128,"start_character":8,"end_line":128,"end_character":52},"updated":"2016-04-21 12:32:18.000000000","message":"The method above makes me really want to refactor the filters to filter the existing ListObject that\u0027s passed in, rather than tracking things and rebuilding a new object at the end.. But that\u0027s unrelated IMO to adding a attribute based filter.","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"8682202db4b05d6c477d3a79e06bdc25cfe726ac","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    \"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    # The YAML Lib imports True as \"1\" - this is to catch all possible values"},{"line_number":59,"context_line":"    TRUTHY_VALUES \u003d [\u0027TRUE\u0027, 1, \u00271\u0027, \u0027True\u0027, \u0027true\u0027, True]"},{"line_number":60,"context_line":"    FALSEY_VALUES \u003d [\u0027FALSE\u0027, 0, \u00270\u0027, \u0027False\u0027, \u0027false\u0027, False]"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def filter(self, context, pools, zone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_6a9c6dc0","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":17},"updated":"2016-04-29 14:37:29.000000000","message":"lol","commit_id":"21ffd368ad8cf79e018be75922cde9392c000d07"}],"releasenotes/notes/attribute-filter-f06a53b61f5fd111.yaml":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"46837fe5fbef11e6e86fdabf7e9d8681abfc5f7f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Addition of the \"attribute\" filter for schedualing zones across pools."},{"line_number":4,"context_line":"    This can be enabled in the ``[service:central]`` section of the config"},{"line_number":5,"context_line":"    by adding ``attribute`` to the list of values in the ``filters`` option."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1a122d0e_e8f657f8","line":3,"updated":"2016-04-21 13:56:56.000000000","message":"Done","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"3a6985aa4a04bd163798022adc16d99dbfc6f362","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Addition of the \"attribute\" filter for schedualing zones across pools."},{"line_number":4,"context_line":"    This can be enabled in the ``[service:central]`` section of the config"},{"line_number":5,"context_line":"    by adding ``attribute`` to the list of values in the ``filters`` option."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1a122d0e_1964cbe3","line":3,"range":{"start_line":3,"start_character":43,"end_line":3,"end_character":54},"updated":"2016-04-21 12:32:18.000000000","message":"scheduling","commit_id":"180d90d700bd2ed3b1cce5160f7186ebdf6df834"}]}
