)]}'
{"designate/central/service.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"00e0863262d5e8555748a1a0844ac8d5afddfc94","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def __init__(self, threads\u003dNone):"},{"line_number":270,"context_line":"        super(Service, self).__init__(threads\u003dthreads)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        self.scheduler \u003d scheduler.get_scheduler()"},{"line_number":273,"context_line":"        self.network_api \u003d network_api.get_network_api(cfg.CONF.network_api)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_eb6034a7","line":272,"updated":"2016-03-10 20:33:37.000000000","message":"I think we should make this lazy like other properties (ie quota, storage, etc.) as the filters may grab a DB connection.","commit_id":"e34a18e7f91747fcfe10d9e1d5a730507142fde4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def __init__(self, threads\u003dNone):"},{"line_number":270,"context_line":"        super(Service, self).__init__(threads\u003dthreads)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        self.scheduler \u003d scheduler.get_scheduler()"},{"line_number":273,"context_line":"        self.network_api \u003d network_api.get_network_api(cfg.CONF.network_api)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_f59f455d","line":272,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def __init__(self, threads\u003dNone):"},{"line_number":270,"context_line":"        super(Service, self).__init__(threads\u003dthreads)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        self.scheduler \u003d scheduler.get_scheduler()"},{"line_number":273,"context_line":"        self.network_api \u003d network_api.get_network_api(cfg.CONF.network_api)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_21223da3","line":272,"range":{"start_line":272,"start_character":8,"end_line":272,"end_character":50},"updated":"2016-03-10 19:13:44.000000000","message":"Nit: Lazy","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":911,"context_line":"        if zone.ttl is not None:"},{"line_number":912,"context_line":"            self._is_valid_ttl(context, zone.ttl)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"        # Get the default pool_id"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"        zone.pool_id \u003d self.scheduler.schedule_zone(context, zone)"},{"line_number":917,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_d59cc96b","line":914,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":911,"context_line":"        if zone.ttl is not None:"},{"line_number":912,"context_line":"            self._is_valid_ttl(context, zone.ttl)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"        # Get the default pool_id"},{"line_number":915,"context_line":""},{"line_number":916,"context_line":"        zone.pool_id \u003d self.scheduler.schedule_zone(context, zone)"},{"line_number":917,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_e1521512","line":914,"updated":"2016-03-10 19:13:44.000000000","message":"Nit: Bad comment","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"}],"designate/objects/adapters/api_v2/zone_attribute.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_55b0b9f4","line":1,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_61ad65e8","line":1,"updated":"2016-03-10 19:13:44.000000000","message":"nit 2016","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"}],"designate/objects/pool_attribute.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from designate.objects import base"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_d5c5e95b","line":15,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from designate.objects import base"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_417b097b","line":15,"updated":"2016-03-10 19:13:44.000000000","message":"Nit extra whitespace!","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"}],"designate/objects/zone_attribute.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        \u0027value\u0027: {"},{"line_number":37,"context_line":"            \u0027schema\u0027: {"},{"line_number":38,"context_line":"                \u0027type\u0027: \u0027string\u0027,"},{"line_number":39,"context_line":"                \u0027maxLength\u0027: 50,"},{"line_number":40,"context_line":"            },"},{"line_number":41,"context_line":"            \u0027required\u0027: True"},{"line_number":42,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_2c7e3f19","line":39,"updated":"2016-03-14 16:46:30.000000000","message":"Is this long enough? I\u0027m just thinking about someone using URLs which can get lengthy.  (ie https://foo.bar.omgwtfbbq.helioncloudproducts.com/tenant/12375837346164836745 \u003d\u003d 77 chars). \n\nWhat was the intended payload?","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"4cbd279dfe998d0037e0f540600c4c2e6594c515","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        \u0027value\u0027: {"},{"line_number":37,"context_line":"            \u0027schema\u0027: {"},{"line_number":38,"context_line":"                \u0027type\u0027: \u0027string\u0027,"},{"line_number":39,"context_line":"                \u0027maxLength\u0027: 50,"},{"line_number":40,"context_line":"            },"},{"line_number":41,"context_line":"            \u0027required\u0027: True"},{"line_number":42,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_cd16b554","line":39,"updated":"2016-03-14 16:58:19.000000000","message":"The intended pay load is things like \"service_tier:GOLD\" or \"anycast:True\"\n\nI think 50 is fine - asking people to type (or copy / paste) anything longer would be pretty bad :)","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"}],"designate/scheduler/__init__.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"4efea41800a0c3793fe0ef90263c7f32620840f8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Hewlett-Packard Development Company, L.P. All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_35093ade","line":1,"updated":"2016-02-10 18:42:43.000000000","message":"Happy new year!!!!","commit_id":"071e379ab4c33f48027a95d9e9e3a8b163d9bd1d"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":25,"context_line":"               help\u003d\"The name of the default pool\"),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027storage-driver\u0027, default\u003d\u0027sqlalchemy\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027The storage driver to use\u0027),"},{"line_number":28,"context_line":"], group\u003d\u0027service:central\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"cfg.CONF.register_group(cfg.OptGroup("},{"line_number":31,"context_line":"    name\u003d\u0027service:central:scheduler\u0027, title\u003d\"Configuration for Central Service\""}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_e1d5f542","line":28,"range":{"start_line":28,"start_character":10,"end_line":28,"end_character":24},"updated":"2016-03-10 19:13:44.000000000","message":"registering in central?","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":28,"context_line":"], group\u003d\u0027service:central\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"cfg.CONF.register_group(cfg.OptGroup("},{"line_number":31,"context_line":"    name\u003d\u0027service:central:scheduler\u0027, title\u003d\"Configuration for Central Service\""},{"line_number":32,"context_line":"))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"cfg.CONF.register_opts(["}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_21435d14","line":31,"range":{"start_line":31,"start_character":10,"end_line":31,"end_character":35},"updated":"2016-03-10 19:13:44.000000000","message":"Nit.. Very wordy? Doesn\u0027t quite fit existing patterns (I think)","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"9dc867c975118aa239b2c66f56645432d77d4afe","unresolved":false,"context_lines":[{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"cfg.CONF.register_group(cfg.OptGroup("},{"line_number":23,"context_line":"    name\u003d\u0027service:central:scheduler\u0027, title\u003d\"Configuration for Scheduler\""},{"line_number":24,"context_line":"))"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"cfg.CONF.register_opts(["}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_e183c002","line":23,"updated":"2016-03-14 15:51:26.000000000","message":"Done","commit_id":"415595c964001238c24bdfa82f634a58f8c8c3c8"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c15403f32789a245af82341e47a185b93c6bcf78","unresolved":false,"context_lines":[{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"cfg.CONF.register_group(cfg.OptGroup("},{"line_number":23,"context_line":"    name\u003d\u0027service:central:scheduler\u0027, title\u003d\"Configuration for Scheduler\""},{"line_number":24,"context_line":"))"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"cfg.CONF.register_opts(["}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_6127b712","line":23,"range":{"start_line":23,"start_character":10,"end_line":23,"end_character":35},"updated":"2016-03-14 14:28:04.000000000","message":"Nit: Still a v.wordy name, and it doesn\u0027t really fit any existing patterns... Our config is already messy enough without adding yet another pattern..","commit_id":"415595c964001238c24bdfa82f634a58f8c8c3c8"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"3b08cd0bd36488aee261d89b4083cf26b4dc9b99","unresolved":false,"context_lines":[{"line_number":22,"context_line":"cfg.CONF.register_opts(["},{"line_number":23,"context_line":"    cfg.ListOpt("},{"line_number":24,"context_line":"        \u0027scheduler_filters\u0027,"},{"line_number":25,"context_line":"        default\u003d[\u0027pool_id_attribute\u0027, \u0027random\u0027],"},{"line_number":26,"context_line":"        help\u003d\u0027Enabled Pool Scheduling filters\u0027),"},{"line_number":27,"context_line":"], group\u003d\u0027service:central\u0027)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3afc51ec_70a2caaf","line":25,"range":{"start_line":25,"start_character":39,"end_line":25,"end_character":45},"updated":"2016-03-14 20:06:37.000000000","message":"Just to keep the behavior utterly consistent with the current state, shouldn\u0027t this be the default pool filter? \n\nIf someone (like me in my dev env) has somehow accidentally created multiple pools (failed multi-pool attempts, failed func test runs, messing around whatever).\n\nShouldn\u0027t we always encourage the default pool first, until we\u0027ve got true multi-pool support (that doesn\u0027t involve setting up dedicated pool managers with different configs and stuff)?","commit_id":"0b82a43b98ed615fba6ca77b894897f455f2a922"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"46e8731aca76d9deeae8f4a9648205416bd84cbd","unresolved":false,"context_lines":[{"line_number":22,"context_line":"cfg.CONF.register_opts(["},{"line_number":23,"context_line":"    cfg.ListOpt("},{"line_number":24,"context_line":"        \u0027scheduler_filters\u0027,"},{"line_number":25,"context_line":"        default\u003d[\u0027pool_id_attribute\u0027, \u0027random\u0027],"},{"line_number":26,"context_line":"        help\u003d\u0027Enabled Pool Scheduling filters\u0027),"},{"line_number":27,"context_line":"], group\u003d\u0027service:central\u0027)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3afc51ec_f397048e","line":25,"range":{"start_line":25,"start_character":39,"end_line":25,"end_character":45},"in_reply_to":"3afc51ec_70a2caaf","updated":"2016-03-14 20:24:10.000000000","message":"Yea, I think that makes sense - defaulting to something safe until we have everything worked out.","commit_id":"0b82a43b98ed615fba6ca77b894897f455f2a922"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"30cef3f021d9b13aa6863365fc1254a5483908d1","unresolved":false,"context_lines":[{"line_number":22,"context_line":"cfg.CONF.register_opts(["},{"line_number":23,"context_line":"    cfg.ListOpt("},{"line_number":24,"context_line":"        \u0027scheduler_filters\u0027,"},{"line_number":25,"context_line":"        default\u003d[\u0027pool_id_attribute\u0027, \u0027random\u0027],"},{"line_number":26,"context_line":"        help\u003d\u0027Enabled Pool Scheduling filters\u0027),"},{"line_number":27,"context_line":"], group\u003d\u0027service:central\u0027)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3afc51ec_79e115fe","line":25,"range":{"start_line":25,"start_character":39,"end_line":25,"end_character":45},"in_reply_to":"3afc51ec_f397048e","updated":"2016-03-14 21:06:05.000000000","message":"Done","commit_id":"0b82a43b98ed615fba6ca77b894897f455f2a922"}],"designate/scheduler/base.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class Scheduler():"},{"line_number":27,"context_line":"    \"\"\"Scheduler that schedules zones based on the filters provided on the zone"},{"line_number":28,"context_line":"    and other inputs."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_35a1adaa","line":26,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class Scheduler():"},{"line_number":27,"context_line":"    \"\"\"Scheduler that schedules zones based on the filters provided on the zone"},{"line_number":28,"context_line":"    and other inputs."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_e10a15d1","line":26,"range":{"start_line":26,"start_character":15,"end_line":26,"end_character":18},"updated":"2016-03-10 19:13:44.000000000","message":"inherit from object","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    :raises: NoFiltersConfigured"},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    __plugin_name__ \u003d \u0027filter\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    filters \u003d []"},{"line_number":41,"context_line":"    \"\"\"The list of filters enabled on this scheduler\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_15a631c1","line":38,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    :raises: NoFiltersConfigured"},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    __plugin_name__ \u003d \u0027filter\u0027"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    filters \u003d []"},{"line_number":41,"context_line":"    \"\"\"The list of filters enabled on this scheduler\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_a1fdadb2","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":30},"updated":"2016-03-10 19:13:44.000000000","message":"leftover","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"            # Get a storage connection"},{"line_number":57,"context_line":"            storage_driver \u003d cfg.CONF[\u0027service:central\u0027].storage_driver"},{"line_number":58,"context_line":"            self.storage \u003d storage.get_storage(storage_driver)"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":61,"context_line":"                                                 \u0027filters configured\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_41aae985","line":58,"range":{"start_line":58,"start_character":12,"end_line":58,"end_character":62},"updated":"2016-03-10 19:13:44.000000000","message":"Better to pass this in from central, otherwise we double things like # of connections in the 2x connection pools","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"            # Get a storage connection"},{"line_number":57,"context_line":"            storage_driver \u003d cfg.CONF[\u0027service:central\u0027].storage_driver"},{"line_number":58,"context_line":"            self.storage \u003d storage.get_storage(storage_driver)"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":61,"context_line":"                                                 \u0027filters configured\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_75ab358a","line":58,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\""},{"line_number":72,"context_line":"        pools \u003d self.storage.find_pools(context)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        if len(self.filters) is 0:"},{"line_number":75,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":76,"context_line":"                                                 \u0027filters configured\u0027)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_418149fa","line":74,"range":{"start_line":74,"start_character":29,"end_line":74,"end_character":33},"updated":"2016-03-10 19:13:44.000000000","message":"Nit \u003d\u003d 0","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        if len(pools) \u003e 1:"},{"line_number":87,"context_line":"            raise exceptions.MultiplePoolsFound()"},{"line_number":88,"context_line":"        if len(pools) is 0:"},{"line_number":89,"context_line":"            raise exceptions.NoValidPoolFound(\u0027There are no pools that \u0027"},{"line_number":90,"context_line":"                                              \u0027matched your request\u0027)"},{"line_number":91,"context_line":"        return pools[0].id"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_01074182","line":88,"range":{"start_line":88,"start_character":22,"end_line":88,"end_character":26},"updated":"2016-03-10 19:13:44.000000000","message":"nit \u003d\u003d 0","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        else:"},{"line_number":56,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":57,"context_line":"                                                 \u0027filters configured\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def schedule_zone(self, context, zone):"},{"line_number":60,"context_line":"        \"\"\"Get a pool to create the new zone in."}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_ac61af3b","line":57,"updated":"2016-03-14 16:46:30.000000000","message":"Outside of the storage getting passed in, is there a reason not to do this work in the get_scheduller function?\n\nThat helps to avoid the Scheduler objects needing an involved mock during init.","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"2c0dd791fc302ddcb0a647b674a01278029f6ea5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        :raises: MultiplePoolsFound, NoValidPoolFound"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        pools \u003d self.storage.find_pools(context)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if len(self.filters) is 0:"},{"line_number":71,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":72,"context_line":"                                                 \u0027filters configured\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_493612e7","line":69,"updated":"2016-03-14 18:31:58.000000000","message":"There should probably be some solving that happens here with the \"available\" pool attributes, against the zone attributes that a user supplies. I can supply:\n\n  \"attributes\": {\"trollololol\": \"poo\"}\n\nRight now, and it just falls through the chain, if someone specifies something that isn\u0027t available (like fat fingering the name of an attribute), they should be notified that we couldn\u0027t complete their request because of that.","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5b63e7803cb1459c8bf6dfac0f60e208ae8dd224","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        :raises: MultiplePoolsFound, NoValidPoolFound"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        pools \u003d self.storage.find_pools(context)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if len(self.filters) is 0:"},{"line_number":71,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":72,"context_line":"                                                 \u0027filters configured\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_c42167a1","line":69,"updated":"2016-03-14 18:49:43.000000000","message":"Yup - but I think that is a new change.\n\nIt will involve work from Kialls yaml stuff as well.","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"8ab058a956830eb2e499dd713e9cf2cc1ab805b0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        :raises: MultiplePoolsFound, NoValidPoolFound"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        pools \u003d self.storage.find_pools(context)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if len(self.filters) is 0:"},{"line_number":71,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":72,"context_line":"                                                 \u0027filters configured\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_e4e3c303","line":69,"in_reply_to":"3afc51ec_646213af","updated":"2016-03-14 18:57:15.000000000","message":"well, we are not using any of the attributes yet :)\n\nThat would be part of the attribute filter, when I finish that later on - and  it has no current way of passing that info out of this call yet.","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"9ead7f183c83982a76f451a350270ef883fc66f0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        :raises: MultiplePoolsFound, NoValidPoolFound"},{"line_number":67,"context_line":"        \"\"\""},{"line_number":68,"context_line":"        pools \u003d self.storage.find_pools(context)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        if len(self.filters) is 0:"},{"line_number":71,"context_line":"            raise exceptions.NoFiltersConfigured(\u0027There are no scheduling \u0027"},{"line_number":72,"context_line":"                                                 \u0027filters configured\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_646213af","line":69,"in_reply_to":"3afc51ec_c42167a1","updated":"2016-03-14 18:54:13.000000000","message":"Really? You couldn\u0027t just select * from pool_attributes and match them right here?","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5b63e7803cb1459c8bf6dfac0f60e208ae8dd224","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        if len(pools) \u003e 1:"},{"line_number":83,"context_line":"            raise exceptions.MultiplePoolsFound()"},{"line_number":84,"context_line":"        if len(pools) is 0:"},{"line_number":85,"context_line":"            raise exceptions.NoValidPoolFound(\u0027There are no pools that \u0027"},{"line_number":86,"context_line":"                                              \u0027matched your request\u0027)"},{"line_number":87,"context_line":"        return pools[0].id"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_a4241baf","line":85,"updated":"2016-03-14 18:49:43.000000000","message":"++ - That would be cool. It would need some work to make it work well though - so I think that is an extra patchset.","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"2c0dd791fc302ddcb0a647b674a01278029f6ea5","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        if len(pools) \u003e 1:"},{"line_number":83,"context_line":"            raise exceptions.MultiplePoolsFound()"},{"line_number":84,"context_line":"        if len(pools) is 0:"},{"line_number":85,"context_line":"            raise exceptions.NoValidPoolFound(\u0027There are no pools that \u0027"},{"line_number":86,"context_line":"                                              \u0027matched your request\u0027)"},{"line_number":87,"context_line":"        return pools[0].id"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_73c01be1","line":85,"updated":"2016-03-14 18:31:58.000000000","message":"I think, at some point it\u0027d be really cool to give more context than this. Like, oh I could only match attributes x and y, but not z. I could see this being a real bad customer experience if there are pools with some overlapping, some exclusive attributes.\n\nI don\u0027t really know about how to do that. But you know, it\u0027d be good. Maybe if there was some sort of debug dict or something that got passed to each filter that recorded what happened during the process, and we could do something like we do with validation errors.\n\nProbably not for this patch, but just a thought.","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"}],"designate/scheduler/filters/attribute_filter.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"00e0863262d5e8555748a1a0844ac8d5afddfc94","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def filter(self, context, pools, zone):"},{"line_number":56,"context_line":"        # FIXME (graham) actually filter on attributes"},{"line_number":57,"context_line":"        return pools"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_6600db34","line":57,"updated":"2016-03-10 20:33:37.000000000","message":"Lest we pull and oslo.versionedobjects UUID here, it might be better to skip this one or issue a warning when instantiated rather than have a noop implementation.","commit_id":"e34a18e7f91747fcfe10d9e1d5a730507142fde4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    \"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def filter(self, context, pools, zone):"},{"line_number":56,"context_line":"        # FIXME (graham) actually filter on attributes"},{"line_number":57,"context_line":"        return pools"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_613d652a","line":56,"range":{"start_line":56,"start_character":8,"end_line":56,"end_character":53},"updated":"2016-03-10 19:13:44.000000000","message":"Better to just remove this? So we don\u0027t need an ActuallyFintersOnAttribueFilter ;)","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        :class:`designate.scheduler.impl_filter.filters.random_filter.RandomFilter`"},{"line_number":51,"context_line":"        in case of multiple Pools matching the filters, as without it, we will"},{"line_number":52,"context_line":"        raise an error to the user."},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    name \u003d \u0027attribute\u0027"},{"line_number":56,"context_line":"    \"\"\"Name to enable in the ``[designate:central:scheduler].filters`` option"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_a790a844","line":53,"updated":"2016-03-14 16:46:30.000000000","message":"If these filters should be used together, then I\u0027d argue it is better to import the random filter here and use it to break ties. I\u0027d also say that we shouldn\u0027t publicize this one.","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"}],"designate/scheduler/filters/default_pool_filter.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from designate.objects import Pool"},{"line_number":19,"context_line":"from designate.objects import PoolList"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"cfg.CONF.register_opts(["},{"line_number":22,"context_line":"    cfg.StrOpt(\u0027default_pool_id\u0027,"},{"line_number":23,"context_line":"               default\u003d\u0027794ccc2c-d751-44fe-b57f-8894c9f5c842\u0027,"},{"line_number":24,"context_line":"               help\u003d\"The name of the default pool\"),"},{"line_number":25,"context_line":"], group\u003d\u0027service:central\u0027)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class DefaultPoolFilter(Filter):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_21851dce","line":25,"range":{"start_line":21,"start_character":0,"end_line":25,"end_character":27},"updated":"2016-03-10 19:13:44.000000000","message":"Again? lol","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"}],"designate/scheduler/filters/fallback_filter.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        This should be used as one of the last filters, if you want to preserve"},{"line_number":35,"context_line":"        behavoir from before the scheduler existed."},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    name \u003d \u0027fallback\u0027"},{"line_number":39,"context_line":"    \"\"\"Name to enable in the ``[designate:central:scheduler].filters`` option"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_e78470d5","line":36,"updated":"2016-03-14 16:46:30.000000000","message":"It looks like the intent is to include this filter to be sure we use a default. Any reason that wouldn\u0027t just be built in? In other words, if you use the scheduler and get nothing, then grab the default? That removes the need to have a default filter and this fallback filter and leaves the filtering / scheduler to only work when it is necessary.","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"4cbd279dfe998d0037e0f540600c4c2e6594c515","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        This should be used as one of the last filters, if you want to preserve"},{"line_number":35,"context_line":"        behavoir from before the scheduler existed."},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    name \u003d \u0027fallback\u0027"},{"line_number":39,"context_line":"    \"\"\"Name to enable in the ``[designate:central:scheduler].filters`` option"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_6d08412d","line":36,"updated":"2016-03-14 16:58:19.000000000","message":"Yes - you want to make sure that if someone asks for something (i.e. anycast:true) and the pool is (full / not enabled / user does not have access to it)\nthey get an error, rather than us just deciding for them.\n\nBy default this would occur, but we should let deployers make that call.","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"}],"designate/scheduler/filters/pool_id_attribute_filter.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"00e0863262d5e8555748a1a0844ac8d5afddfc94","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                if pool in pools:"},{"line_number":81,"context_line":"                    pools \u003d objects.PoolList()"},{"line_number":82,"context_line":"                    pools.append(pool)"},{"line_number":83,"context_line":"                return pools"},{"line_number":84,"context_line":"            else:"},{"line_number":85,"context_line":"                return pools"},{"line_number":86,"context_line":"        except exceptions.RelationNotLoaded:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_61f60590","line":83,"updated":"2016-03-10 20:33:37.000000000","message":"While I understand the idea here (a filter takes an existing list of pools and returns a new list for the next filter to act on), this looks like the danger zone! Could you just s/pools/new_pools and return new_pools within the if?","commit_id":"e34a18e7f91747fcfe10d9e1d5a730507142fde4"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    \"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self):"},{"line_number":58,"context_line":"        storage_driver \u003d cfg.CONF[\u0027service:central\u0027].storage_driver"},{"line_number":59,"context_line":"        self.storage \u003d storage.get_storage(storage_driver)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def filter(self, context, pools, zone):"},{"line_number":62,"context_line":"        \"\"\"Attempt to load and set the pool to the one provied in the"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_e1f33571","line":59,"range":{"start_line":58,"start_character":8,"end_line":59,"end_character":58},"updated":"2016-03-10 19:13:44.000000000","message":"pass from central, otherwise we double the connection count","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if zone.attributes.get(\u0027pool_id\u0027):"},{"line_number":77,"context_line":"                pool_id \u003d zone.attributes.get(\u0027pool_id\u0027)"},{"line_number":78,"context_line":"                pool \u003d self.storage.get_pool(context, pool_id)"},{"line_number":79,"context_line":"                policy.check(\u0027specify_pool_id\u0027, context, pool)"},{"line_number":80,"context_line":"                if pool in pools:"},{"line_number":81,"context_line":"                    pools \u003d objects.PoolList()"},{"line_number":82,"context_line":"                    pools.append(pool)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_f5c8e576","line":79,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if zone.attributes.get(\u0027pool_id\u0027):"},{"line_number":77,"context_line":"                pool_id \u003d zone.attributes.get(\u0027pool_id\u0027)"},{"line_number":78,"context_line":"                pool \u003d self.storage.get_pool(context, pool_id)"},{"line_number":79,"context_line":"                policy.check(\u0027specify_pool_id\u0027, context, pool)"},{"line_number":80,"context_line":"                if pool in pools:"},{"line_number":81,"context_line":"                    pools \u003d objects.PoolList()"},{"line_number":82,"context_line":"                    pools.append(pool)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_21b87d74","line":79,"range":{"start_line":79,"start_character":30,"end_line":79,"end_character":45},"updated":"2016-03-10 19:13:44.000000000","message":"Maybe zone_create_forced_pool ?","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5b63e7803cb1459c8bf6dfac0f60e208ae8dd224","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        try:"},{"line_number":70,"context_line":"            if zone.attributes.get(\u0027pool_id\u0027):"},{"line_number":71,"context_line":"                pool_id \u003d zone.attributes.get(\u0027pool_id\u0027)"},{"line_number":72,"context_line":"                pool \u003d self.storage.get_pool(context, pool_id)"},{"line_number":73,"context_line":"                policy.check(\u0027zone_create_forced_pool\u0027, context, pool)"},{"line_number":74,"context_line":"                if pool in pools:"},{"line_number":75,"context_line":"                    pools \u003d objects.PoolList()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_e43623e6","line":72,"updated":"2016-03-14 18:49:43.000000000","message":"-_- - Thanks.","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"2c0dd791fc302ddcb0a647b674a01278029f6ea5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        try:"},{"line_number":70,"context_line":"            if zone.attributes.get(\u0027pool_id\u0027):"},{"line_number":71,"context_line":"                pool_id \u003d zone.attributes.get(\u0027pool_id\u0027)"},{"line_number":72,"context_line":"                pool \u003d self.storage.get_pool(context, pool_id)"},{"line_number":73,"context_line":"                policy.check(\u0027zone_create_forced_pool\u0027, context, pool)"},{"line_number":74,"context_line":"                if pool in pools:"},{"line_number":75,"context_line":"                    pools \u003d objects.PoolList()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_cedea83e","line":72,"updated":"2016-03-14 18:31:58.000000000","message":"I noticed that creating a zone with an invalid uuid as an attribute fails with a 500, it seems to be a problem at the db layer that bubbles up:\n\n    {\n      \"name\": \"poopppy.com.\",\n      \"email\": \"tim.simmons@rackspace.com\", \n      \"attributes\": { \"pool_id\": \"123\" }\n    }\n\n    {\"code\": 500, \"type\": \"unknown\", \"request_id\": \"req-8b870073-e4bc-415b-aa00-54a0e697eb0b\"}","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"}],"designate/scheduler/filters/random_filter.py":[{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"2c0dd791fc302ddcb0a647b674a01278029f6ea5","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        This should be used as one of the last filters, as it reduces the"},{"line_number":30,"context_line":"        supplied pool list to one."},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"    name \u003d \u0027random\u0027"},{"line_number":33,"context_line":"    \"\"\"Name to enable in the ``[designate:central:scheduler].filters`` option"},{"line_number":34,"context_line":"    list"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_ee228400","line":31,"updated":"2016-03-14 18:31:58.000000000","message":"An odd thing that can happen with this, although I don\u0027t know that there\u0027s a way to avoid it. If you\u0027ve got multiple pools that match, you could send the same API request to create zone multiple times, and sometimes get a dup domain exception, and other times not. I know we don\u0027t really care if the same zone is in multiple pools (right?) but maybe only the person who owns the zone the other pool should be able to create it in another?","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5b63e7803cb1459c8bf6dfac0f60e208ae8dd224","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        This should be used as one of the last filters, as it reduces the"},{"line_number":30,"context_line":"        supplied pool list to one."},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"    name \u003d \u0027random\u0027"},{"line_number":33,"context_line":"    \"\"\"Name to enable in the ``[designate:central:scheduler].filters`` option"},{"line_number":34,"context_line":"    list"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_043cefc6","line":31,"updated":"2016-03-14 18:49:43.000000000","message":"From IRC: (for the benifit of others reading this)\n\n[18:33] \u003c      mugsie\u003e | timsim: re the dup domain for same domain - that was the shared namespace issue that was talked about before - and I got overruled on\n[18:34] \u003c      mugsie\u003e | apparently it is OK, as only the real owner can delagate the NS records\n[18:34] \u003c      timsim\u003e | Ehhh me no likey.\n[18:34] \u003c      timsim\u003e | There\u0027s too much chance for customers to be customers and mess things up and get really scared.\n[18:41] \u003c      mugsie\u003e | yeah\n[18:42] \u003c      mugsie\u003e | that would be a separate change though\n[18:42] \u003c      mugsie\u003e | as it the current behavior of the system","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"39ec700ad2b51191e02e7cc887343f5b55fc1a46","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        This should be used as one of the last filters, as it reduces the"},{"line_number":30,"context_line":"        supplied pool list to one."},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"    name \u003d \u0027random\u0027"},{"line_number":33,"context_line":"    \"\"\"Name to enable in the ``[designate:central:scheduler].filters`` option"},{"line_number":34,"context_line":"    list"}],"source_content_type":"text/x-python","patch_set":14,"id":"3afc51ec_d3e3e803","line":31,"in_reply_to":"3afc51ec_043cefc6","updated":"2016-03-14 20:23:35.000000000","message":"I think I agree with Tim here, one of the filters should be a \"Zone Name Available\" filter.. There\u0027s still a race condition with 2 creates at once, but, it\u0027s less likely to happen and could be fully mitigated later?","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"}],"designate/scheduler/impl_filter/filters/attribute_filter.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"4efea41800a0c3793fe0ef90263c7f32620840f8","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def filter(self, pools, zone):"},{"line_number":26,"context_line":"        # FIXME (graham) actually filter on attributes"},{"line_number":27,"context_line":"        return pools"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_15de7e11","line":27,"updated":"2016-02-10 18:42:43.000000000","message":"It would be worth saying what attributes we\u0027re talking about here. You know for, the kids.","commit_id":"071e379ab4c33f48027a95d9e9e3a8b163d9bd1d"}],"designate/tests/__init__.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"00e0863262d5e8555748a1a0844ac8d5afddfc94","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        self.config(network_api\u003d\u0027fake\u0027)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        self.config("},{"line_number":322,"context_line":"            filters\u003d[\u0027attribute\u0027, \u0027pool_id_attribute\u0027, \u0027fallback\u0027, \u0027random\u0027],"},{"line_number":323,"context_line":"            group\u003d\u0027service:central:scheduler\u0027)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        # \"Read\" Configuration"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_2137dd4d","line":322,"updated":"2016-03-10 20:33:37.000000000","message":"I\u0027d list these vertically and remove or comment out the pool_id_attribute as it isn\u0027t really working yet.","commit_id":"e34a18e7f91747fcfe10d9e1d5a730507142fde4"}],"designate/tests/test_central/test_service.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        fixture[\"attributes\"][\"pool_id\"] \u003d second_pool.id"},{"line_number":547,"context_line":"        fixture[\"name\"] \u003d \"sub.%s\" % fixture[\"name\"]"},{"line_number":548,"context_line":"        LOG.warn(zone)"},{"line_number":549,"context_line":"        LOG.warn(fixture)"},{"line_number":550,"context_line":"        subzone \u003d self.create_zone(**fixture)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        LOG.warn(subzone)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_b595bd41","line":549,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":545,"context_line":"        fixture[\"attributes\"] \u003d {}"},{"line_number":546,"context_line":"        fixture[\"attributes\"][\"pool_id\"] \u003d second_pool.id"},{"line_number":547,"context_line":"        fixture[\"name\"] \u003d \"sub.%s\" % fixture[\"name\"]"},{"line_number":548,"context_line":"        LOG.warn(zone)"},{"line_number":549,"context_line":"        LOG.warn(fixture)"},{"line_number":550,"context_line":"        subzone \u003d self.create_zone(**fixture)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        LOG.warn(subzone)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_617565c9","line":549,"range":{"start_line":548,"start_character":0,"end_line":549,"end_character":25},"updated":"2016-03-10 19:13:44.000000000","message":"leftover","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        LOG.warn(fixture)"},{"line_number":550,"context_line":"        subzone \u003d self.create_zone(**fixture)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        LOG.warn(subzone)"},{"line_number":553,"context_line":"        if subzone.pool_id is not zone.pool_id:"},{"line_number":554,"context_line":"            self.assertIsNone(subzone.parent_zone_id)"},{"line_number":555,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_95924156","line":552,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        LOG.warn(fixture)"},{"line_number":550,"context_line":"        subzone \u003d self.create_zone(**fixture)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        LOG.warn(subzone)"},{"line_number":553,"context_line":"        if subzone.pool_id is not zone.pool_id:"},{"line_number":554,"context_line":"            self.assertIsNone(subzone.parent_zone_id)"},{"line_number":555,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_4143096c","line":552,"range":{"start_line":552,"start_character":8,"end_line":552,"end_character":25},"updated":"2016-03-10 19:13:44.000000000","message":"leftover","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"}],"designate/tests/unit/test_central/test_basic.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                {\u0027id\u0027: \u0027794ccc2c-d751-44fe-b57f-8894c9f5c842\u0027}"},{"line_number":244,"context_line":"            ]"},{"line_number":245,"context_line":"        )"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        attrs \u003d {"},{"line_number":248,"context_line":"            \u0027count_zones.return_value\u0027: 0,"},{"line_number":249,"context_line":"            \u0027find_zone.return_value\u0027: Mockzone(),"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_92d4c847","line":246,"updated":"2016-03-14 16:46:30.000000000","message":"Yes!","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"}],"designate/tests/unit/test_scheduler/test_basic.py":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        with testtools.ExpectedException(exceptions.NoValidPoolFound):"},{"line_number":101,"context_line":"            test_scheduler.schedule_zone(self.context, zone)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_no_filters_enabled(self):"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        cfg.CONF.set_override("},{"line_number":106,"context_line":"            \u0027filters\u0027, [], \u0027service:central:scheduler\u0027, enforce_type\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_12cb9873","line":103,"updated":"2016-03-14 16:46:30.000000000","message":"FWIW, this could go away if the fallback / defaults are built in rather than required in the filter list.","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"}],"doc/source/pools.rst":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5b63e7803cb1459c8bf6dfac0f60e208ae8dd224","unresolved":false,"context_lines":[{"line_number":44,"context_line":"In a private cloud situation, it allows operators to separate internal and"},{"line_number":45,"context_line":"external facing zones."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"To help users create zones on the create zones on the correct pool we have a"},{"line_number":48,"context_line":"\"scheduler\" that is responsible for examining the zone being created and the"},{"line_number":49,"context_line":"pools that are availible for use, and matching the zone to a pool."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"3afc51ec_4436f7e6","line":47,"updated":"2016-03-14 18:49:43.000000000","message":"-_-","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"2c0dd791fc302ddcb0a647b674a01278029f6ea5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"In a private cloud situation, it allows operators to separate internal and"},{"line_number":45,"context_line":"external facing zones."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"To help users create zones on the create zones on the correct pool we have a"},{"line_number":48,"context_line":"\"scheduler\" that is responsible for examining the zone being created and the"},{"line_number":49,"context_line":"pools that are availible for use, and matching the zone to a pool."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"3afc51ec_98ba266d","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":46},"updated":"2016-03-14 18:31:58.000000000","message":"typo ;)","commit_id":"3cb6cc091fe52a6e33acf20e08ed4c1bf958ca67"}],"doc/source/pools/scheduler.rst":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b25b7af246e4c0505e75ca8cdd4375f3a5a87a57","unresolved":false,"context_lines":[{"line_number":1,"context_line":".."},{"line_number":2,"context_line":"    Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5aef4532_1ca7a80b","line":2,"range":{"start_line":2,"start_character":14,"end_line":2,"end_character":18},"updated":"2016-03-10 19:13:44.000000000","message":"2016","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"2f6dc5b58a345647af96d01d06e7e10f8fb065f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":".."},{"line_number":2,"context_line":"    Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3afc51ec_35888d22","line":2,"updated":"2016-03-11 18:09:25.000000000","message":"Done","commit_id":"bd2af46c28c3c51da227fb01f1350cbebbf942d1"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"a2874a027a3e9fe64bcee7130962074586c28fd7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Pool Scheduler"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"In designate we have a plugable scheduler filter interface."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"You can set an ordered list of filters to run on each zone create api request."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3afc51ec_12cef859","line":22,"updated":"2016-03-14 16:36:11.000000000","message":"Ack.\n\nThe text about the attributes will be added when that filter is added back and enabled.\n\nI am updating the text for the pools section now, and will reword ^^","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"4cbd279dfe998d0037e0f540600c4c2e6594c515","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Pool Scheduler"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"In designate we have a plugable scheduler filter interface."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"You can set an ordered list of filters to run on each zone create api request."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3afc51ec_2d0e393b","line":22,"updated":"2016-03-14 16:58:19.000000000","message":"Openstack has a common name of \"scheduler\" for a module like this - I think that we should follow this convention","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"},{"author":{"_account_id":8174,"name":"Tim Simmons","email":"tim.r.simmons@gmail.com","username":"TimSimmons"},"change_message_id":"cc861faa01f3fa7cccea5b098252e9f5905a50bc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Pool Scheduler"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"In designate we have a plugable scheduler filter interface."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"You can set an ordered list of filters to run on each zone create api request."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3afc51ec_c7f7b4f3","line":22,"updated":"2016-03-14 16:21:45.000000000","message":"What scheduler? What filters? What are filters? What makes them up? What\u0027s the difference between pool attributes and zone attributes? I\u0027m so confused!\n\n-Everyone","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"},{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Pool Scheduler"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"In designate we have a plugable scheduler filter interface."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"You can set an ordered list of filters to run on each zone create api request."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3afc51ec_ad752999","line":22,"in_reply_to":"3afc51ec_12cef859","updated":"2016-03-14 16:46:30.000000000","message":"It would be a good idea to explain what the pool scheduler is really doing. It allows users a configurable means of choosing what pool a zone will be managed by. This makes me think scheduler, even though it does make sense, could get a better name as it gets exposed to the user. Pool Router maybe? Might be too late for renaming, but in reading through, it seemed important to bring it up. \n\nBy the way, just because we might expose a Pool Router to the user via the config, it doesn\u0027t mean it isn\u0027t implemented by the pool scheduler. The point here is that code doesn\u0027t have to change all over the place.","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"}],"setup.cfg":[{"author":{"_account_id":15171,"name":"Eric Larson","email":"eric.larson@rackspace.com","username":"elarson"},"change_message_id":"291177aec76305f0b418ba5b484f76c1c4166bd8","unresolved":false,"context_lines":[{"line_number":105,"context_line":"designate.scheduler.filters \u003d"},{"line_number":106,"context_line":"    fallback \u003d designate.scheduler.filters.fallback_filter:FallbackFilter"},{"line_number":107,"context_line":"    random \u003d designate.scheduler.filters.random_filter:RandomFilter"},{"line_number":108,"context_line":"    pool_id_attribute \u003d designate.scheduler.filters.pool_id_attribute_filter:PoolIDAttributeFilter"},{"line_number":109,"context_line":"    default_pool \u003d designate.scheduler.filters.default_pool_filter:DefaultPoolFilter"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"designate.manage \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"3afc51ec_ad9c09c1","line":108,"updated":"2016-03-14 16:46:30.000000000","message":"I\u0027m really thinking this shouldn\u0027t be here until it is implemented.","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"4cbd279dfe998d0037e0f540600c4c2e6594c515","unresolved":false,"context_lines":[{"line_number":105,"context_line":"designate.scheduler.filters \u003d"},{"line_number":106,"context_line":"    fallback \u003d designate.scheduler.filters.fallback_filter:FallbackFilter"},{"line_number":107,"context_line":"    random \u003d designate.scheduler.filters.random_filter:RandomFilter"},{"line_number":108,"context_line":"    pool_id_attribute \u003d designate.scheduler.filters.pool_id_attribute_filter:PoolIDAttributeFilter"},{"line_number":109,"context_line":"    default_pool \u003d designate.scheduler.filters.default_pool_filter:DefaultPoolFilter"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"designate.manage \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"3afc51ec_0d09bd31","line":108,"updated":"2016-03-14 16:58:19.000000000","message":"It is implemented ;) - the attribute filter is not implemented and it is not here","commit_id":"e852bbb731b43c29f7f1ba6f5468a206defaaed4"}]}
