)]}'
{"designate/backend/impl_dynect.py":[{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    cfg.ListOpt(\u0027masters\u0027,"},{"line_number":21,"context_line":"                help\u003d\"Master servers from which to transfer from.\")],"},{"line_number":22,"context_line":"    group\u003dGROUP"},{"line_number":23,"context_line":")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class HttpError(Exception):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaZk%3D","line":23,"updated":"2014-04-14 19:04:54.000000000","message":"Looks like you forgot to register the group?\n\nAnd - Can we update this to match the pattern in [1] so the sample config generation picks it up, once merged.\n\ne.g:\n\n    cfg.CONF.register_group(cfg.OptGroup(\n        name\u003d\u0027backend:dynect\u0027, title\u003d\"Configuration for DynECT Backend\"\n    ))\n\n    OPTS \u003d [\n        cfg.IntOpt(.....),\n    ]\n\n    cfg.CONF.register_opts(OPTS, group\u003d\u0027backend:dynect\u0027)\n\n[1]: https://review.openstack.org/#/c/86709/","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":23,"context_line":")"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class HttpError(Exception):"},{"line_number":27,"context_line":"    \"\"\"The base exception class for all HTTP exceptions."},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    def __init__(self, data\u003dNone, job_id\u003dNone, msgs\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaY8%3D","line":26,"updated":"2014-04-14 19:04:54.000000000","message":"All exceptions leaving the Backend should extend excpetions.Backend - Otherwise they don\u0027t get handled correctly on the calling side....\n\nCan we also call this something more meaningful? When we see a \"HttpError\" in the logs, it\u0027ll be hard to know it really means \"DynClientHttpError\"","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class DynClient(object):"},{"line_number":59,"context_line":"    \"\"\""},{"line_number":60,"context_line":"    DynDNS ECT service client."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    https://help.dynect.net/rest/"},{"line_number":63,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaX0%3D","line":60,"updated":"2014-04-14 19:04:54.000000000","message":"s/DynDNS ECT/DynEXT/","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"\"\""},{"line_number":64,"context_line":"    def __init__(self, customer_name, user_name, password,"},{"line_number":65,"context_line":"                 endpoint\u003d\"https://api.dynect.net:443\","},{"line_number":66,"context_line":"                 api_version\u003d\u0027current\u0027, headers\u003d{}, verify\u003dTrue, retries\u003d1,"},{"line_number":67,"context_line":"                 timeout\u003d2, pool_maxsize\u003d10, pool_connections\u003d10):"},{"line_number":68,"context_line":"        self.customer_name \u003d customer_name"},{"line_number":69,"context_line":"        self.user_name \u003d user_name"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaTs%3D","line":66,"updated":"2014-04-14 19:04:54.000000000","message":"Re \"api_version\u003d\u0027current\u0027\" - If there\u0027s a specific version we can target, we should..\n\n\"current\" will likely change from under us on occasion.","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.poll \u003d True"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.token \u003d None"},{"line_number":77,"context_line":"        self.authing \u003d False"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        session \u003d requests.Session()"},{"line_number":80,"context_line":"        session.verify \u003d verify"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaS8%3D","line":77,"updated":"2014-04-14 19:04:54.000000000","message":"To Remove? - doesn\u0027t get used","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            path \u003d \u0027/\u0027 + path"},{"line_number":112,"context_line":"        if not path.startswith(\u0027/REST\u0027):"},{"line_number":113,"context_line":"            path \u003d \u0027/REST\u0027 + path"},{"line_number":114,"context_line":"        return self.endpoint + path"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def post(self, *args, **kwargs):"},{"line_number":117,"context_line":"        response \u003d self._wrap(self.http.post, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaSg%3D","line":114,"updated":"2014-04-14 19:04:54.000000000","message":"Can we simplify this by just passing the right URL in the first place?\n\nWe shouldn\u0027t need to guess or alter the URLs within our own code.","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        The API might return a job nr in the response in case of a async"},{"line_number":145,"context_line":"        response: https://github.com/fog/fog/issues/575"},{"line_number":146,"context_line":"        \"\"\""},{"line_number":147,"context_line":"        while response.status \u003d\u003d 307:"},{"line_number":148,"context_line":"            time.sleep(1)"},{"line_number":149,"context_line":"            url \u003d response.headers.get(\u0027Location\u0027)"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaV0%3D","line":147,"updated":"2014-04-14 19:04:54.000000000","message":"So .. We\u0027ll need to either set an iteration or time limit on this.. Otherwise we could sit here indefinitely.\n\nLet\u0027s use a timeout, defaulting to.. hmm.. 40 seconds?\n\nCan we also reach out to Dyn for confirmation on the cases where a 307 is likely to come back, and how long we can typically expect to wait for the action to complete... Finally - If we timeout, It would idea if we can cancel the pending task. Can you find out if that\u0027s possible?\n\n[1]: http://eventlet.net/doc/modules/timeout.html","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        response: https://github.com/fog/fog/issues/575"},{"line_number":146,"context_line":"        \"\"\""},{"line_number":147,"context_line":"        while response.status \u003d\u003d 307:"},{"line_number":148,"context_line":"            time.sleep(1)"},{"line_number":149,"context_line":"            url \u003d response.headers.get(\u0027Location\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"            LOG.debug(\"Polling %s\" % url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaVY%3D","line":148,"updated":"2014-04-14 19:04:54.000000000","message":"Does DynECT return a Retry-After header rather than assuming 1 second retries?","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            time.sleep(1)"},{"line_number":149,"context_line":"            url \u003d response.headers.get(\u0027Location\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"            LOG.debug(\"Polling %s\" % url)"},{"line_number":152,"context_line":"            response \u003d self.get(url)"},{"line_number":153,"context_line":"        return response"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaR4%3D","line":151,"updated":"2014-04-14 19:04:54.000000000","message":"Can we move this to the beginning of the `while` loop, and add \"in 1 second\" otherwise there\u0027s a 1 sec delay where \"nothing is happening\" according to the logs.","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        response \u003d method(url, *args, **kwargs)"},{"line_number":177,"context_line":"        if response.status_code !\u003d 200:"},{"line_number":178,"context_line":"            raise HttpError.from_response(response)"},{"line_number":179,"context_line":"        if poll:"},{"line_number":180,"context_line":"            response \u003d self.poll_response(response)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        self._log_response(response)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaUQ%3D","line":179,"updated":"2014-04-14 19:04:54.000000000","message":"Since poll will always be True, lets get rid of the passing around and checking of the poll variable..","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        if poll:"},{"line_number":180,"context_line":"            response \u003d self.poll_response(response)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        self._log_response(response)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if response.headers[\u0027content-type\u0027]:"},{"line_number":185,"context_line":"            return response.json()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaUA%3D","line":182,"updated":"2014-04-14 19:04:54.000000000","message":"Finally.. After all the polling, we never actually make use of the response ;)\n\nI assume we should be checking the response for error conditions and raising an Exception when necessary?","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"57e28e9fcfbb84cffc70bcfcf03186b9266bfe11","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    def create_domain(self, context, domain):"},{"line_number":203,"context_line":"        url \u003d \u0027/Secondary/%s\u0027 % domain[\u0027name\u0027].rstrip(\u0027.\u0027)"},{"line_number":204,"context_line":"        data \u003d {"},{"line_number":205,"context_line":"            \u0027contact_name\u0027: domain[\u0027email\u0027],"},{"line_number":206,"context_line":"            \u0027masters\u0027: CONF[GROUP].masters"},{"line_number":207,"context_line":"        }"},{"line_number":208,"context_line":"        self.client.login()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaQI%3D","line":205,"updated":"2014-04-14 19:07:21.000000000","message":"Does the contact_name field accept any value, or does it have to map to a DynECT contact?\n\nIf it needs to map, then lets make this a config option.","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"b6e2c77442c1f6b88fcc3dc826568d1b701642df","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        self.client.delete(url)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def update_recordset(self, context, domain, recordset):"},{"line_number":220,"context_line":"        pass"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def delete_recordset(self, context, domain, recordset):"},{"line_number":223,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2FaRQ%3D","line":220,"updated":"2014-04-14 19:04:54.000000000","message":"Can we LOG.debug(\u0027Discarding update_recordset call, not-applicable\u0027) to this an similar methods?","commit_id":"3c6ef91b83aec0e83f1ffa6e3392fd8b4a28110e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"0e2f2c3eb1fc85e2958284bfe6984ee9f6e576a7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    cfg.StrOpt(\u0027contact_nickname\u0027,"},{"line_number":23,"context_line":"               help\u003d\"Nickname that will receive notifications.\"),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027tsig_key_name\u0027, help\u003d\"TSIG key name.\"),"},{"line_number":25,"context_line":"    cfg.IntOpt(\u0027job_timeout\u0027, help\u003d\"Timeout for pulling a job in DynDNS.\")"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"cfg.CONF.register_group("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FTYQ%3D","line":25,"updated":"2014-04-15 13:35:18.000000000","message":"There should be a default .. and s/DynDNS/DynECT/","commit_id":"ddf7f9c50ad6baeb4126c6c3e4a446af494ed13c"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"0e2f2c3eb1fc85e2958284bfe6984ee9f6e576a7","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class DynClient(object):"},{"line_number":67,"context_line":"    \"\"\""},{"line_number":68,"context_line":"    DynDNS ECT service client."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    https://help.dynect.net/rest/"},{"line_number":71,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAW3%2F%2FTag%3D","line":68,"updated":"2014-04-15 13:35:18.000000000","message":"s/DynDNS ECT/DynECT/ (still :P)","commit_id":"ddf7f9c50ad6baeb4126c6c3e4a446af494ed13c"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"793a1650934de5dfdadbc47b041a441e581ac658","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"OPTS \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027customer_name\u0027, help\u003d\"Customer name at DynECT.\"),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027user_name\u0027, help\u003d\"Username to auth with DynECT.\"),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027password\u0027, help\u003d\"Password to auth with DynECT.\", secret\u003dTrue),"},{"line_number":35,"context_line":"    cfg.ListOpt(\u0027masters\u0027,"},{"line_number":36,"context_line":"                help\u003d\"Master servers from which to transfer from.\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FTD0%3D","line":33,"updated":"2014-04-15 14:06:07.000000000","message":"Can we call this \"username\", for consistency with other username config vars","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"OPTS \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027customer_name\u0027, help\u003d\"Customer name at DynECT.\"),"},{"line_number":33,"context_line":"    cfg.StrOpt(\u0027user_name\u0027, help\u003d\"Username to auth with DynECT.\"),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027password\u0027, help\u003d\"Password to auth with DynECT.\", secret\u003dTrue),"},{"line_number":35,"context_line":"    cfg.ListOpt(\u0027masters\u0027,"},{"line_number":36,"context_line":"                help\u003d\"Master servers from which to transfer from.\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQiQ%3D","line":33,"in_reply_to":"AAAAW3%2F%2FTD0%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"49c0217ed4387af399f208f505e5f6e3aeae5af3","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d\"Nickname that will receive notifications.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027tsig_key_name\u0027, help\u003d\"TSIG key name.\"),"},{"line_number":40,"context_line":"    cfg.IntOpt(\u0027job_timeout\u0027, default\u003d30,"},{"line_number":41,"context_line":"               help\u003d\"Timeout for pulling a job in DynECT.\")"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"cfg.CONF.register_group("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FShU%3D","line":41,"updated":"2014-04-15 17:00:04.000000000","message":"could you add that the Timeout is in seconds?","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d\"Nickname that will receive notifications.\"),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027tsig_key_name\u0027, help\u003d\"TSIG key name.\"),"},{"line_number":40,"context_line":"    cfg.IntOpt(\u0027job_timeout\u0027, default\u003d30,"},{"line_number":41,"context_line":"               help\u003d\"Timeout for pulling a job in DynECT.\")"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"cfg.CONF.register_group("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQiM%3D","line":41,"in_reply_to":"AAAAW3%2F%2FShU%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"49c0217ed4387af399f208f505e5f6e3aeae5af3","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    def __init__(self, customer_name, user_name, password,"},{"line_number":89,"context_line":"                 endpoint\u003d\"https://api.dynect.net:443\","},{"line_number":90,"context_line":"                 api_version\u003d\u00273.5.6\u0027, headers\u003d{}, verify\u003dTrue, retries\u003d1,"},{"line_number":91,"context_line":"                 timeout\u003d2, pool_maxsize\u003d10, pool_connections\u003d10):"},{"line_number":92,"context_line":"        self.customer_name \u003d customer_name"},{"line_number":93,"context_line":"        self.user_name \u003d user_name"},{"line_number":94,"context_line":"        self.password \u003d password"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FSqA%3D","line":91,"updated":"2014-04-15 17:00:04.000000000","message":"The timeout value is not used.","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"49c0217ed4387af399f208f505e5f6e3aeae5af3","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        # Authenticate or not."},{"line_number":172,"context_line":"        if self.token is None and not no_auth:"},{"line_number":173,"context_line":"            self.login()"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        if \u0027data\u0027 in kwargs:"},{"line_number":176,"context_line":"            kwargs[\u0027data\u0027] \u003d json.dumps(kwargs[\u0027data\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FRJg%3D","line":173,"updated":"2014-04-15 17:00:04.000000000","message":"Should there be a logout call at the end of this method?","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        # Authenticate or not."},{"line_number":172,"context_line":"        if self.token is None and not no_auth:"},{"line_number":173,"context_line":"            self.login()"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        if \u0027data\u0027 in kwargs:"},{"line_number":176,"context_line":"            kwargs[\u0027data\u0027] \u003d json.dumps(kwargs[\u0027data\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQxc%3D","line":173,"in_reply_to":"AAAAW3%2F%2FRJg%3D","updated":"2014-04-15 18:51:44.000000000","message":"No, this is to auth if there\u0027s no token atm.","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"49c0217ed4387af399f208f505e5f6e3aeae5af3","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        response \u003d method(url, *args, **kwargs)"},{"line_number":185,"context_line":"        if response.status_code !\u003d 200:"},{"line_number":186,"context_line":"            raise DynClientError.from_response(response)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if poll:"},{"line_number":189,"context_line":"            timeout \u003d Timeout(cfg.CONF[GROUP].job_timeout, DynClientError)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FSkM%3D","line":186,"updated":"2014-04-15 17:00:04.000000000","message":"Async responses would return a 307 - correct?  So wouldn\u0027t that cause an exception to be raised here?","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        response \u003d method(url, *args, **kwargs)"},{"line_number":185,"context_line":"        if response.status_code !\u003d 200:"},{"line_number":186,"context_line":"            raise DynClientError.from_response(response)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if poll:"},{"line_number":189,"context_line":"            timeout \u003d Timeout(cfg.CONF[GROUP].job_timeout, DynClientError)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQwY%3D","line":186,"in_reply_to":"AAAAW3%2F%2FSkM%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"793a1650934de5dfdadbc47b041a441e581ac658","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            raise DynClientError.from_response(response)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if poll:"},{"line_number":189,"context_line":"            timeout \u003d Timeout(cfg.CONF[GROUP].job_timeout, DynClientError)"},{"line_number":190,"context_line":"            try:"},{"line_number":191,"context_line":"                response \u003d self.poll_response(response)"},{"line_number":192,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FTDY%3D","line":189,"updated":"2014-04-15 14:06:07.000000000","message":"Can we move the timeout stuff to inside the poll_response method?\n\nBetter to keep the timeout code right next to the infinite loop code ;)","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"49c0217ed4387af399f208f505e5f6e3aeae5af3","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            raise DynClientError.from_response(response)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if poll:"},{"line_number":189,"context_line":"            timeout \u003d Timeout(cfg.CONF[GROUP].job_timeout, DynClientError)"},{"line_number":190,"context_line":"            try:"},{"line_number":191,"context_line":"                response \u003d self.poll_response(response)"},{"line_number":192,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FSeA%3D","line":189,"updated":"2014-04-15 17:00:04.000000000","message":"If an exception is raised, is it raised with all the parameters as None?  Is there a way to get a more meaningful message here?","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            raise DynClientError.from_response(response)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if poll:"},{"line_number":189,"context_line":"            timeout \u003d Timeout(cfg.CONF[GROUP].job_timeout, DynClientError)"},{"line_number":190,"context_line":"            try:"},{"line_number":191,"context_line":"                response \u003d self.poll_response(response)"},{"line_number":192,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQjM%3D","line":189,"in_reply_to":"AAAAW3%2F%2FSeA%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            raise DynClientError.from_response(response)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        if poll:"},{"line_number":189,"context_line":"            timeout \u003d Timeout(cfg.CONF[GROUP].job_timeout, DynClientError)"},{"line_number":190,"context_line":"            try:"},{"line_number":191,"context_line":"                response \u003d self.poll_response(response)"},{"line_number":192,"context_line":"            finally:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQwA%3D","line":189,"in_reply_to":"AAAAW3%2F%2FTDY%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"793a1650934de5dfdadbc47b041a441e581ac658","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            finally:"},{"line_number":193,"context_line":"                timeout.cancel()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if response.headers[\u0027content-type\u0027]:"},{"line_number":196,"context_line":"            return response.json()"},{"line_number":197,"context_line":"        else:"},{"line_number":198,"context_line":"            return response.content"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FTDA%3D","line":195,"updated":"2014-04-15 14:06:07.000000000","message":"Should we actually be checking the value of the Content-Type header? ;)","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            finally:"},{"line_number":193,"context_line":"                timeout.cancel()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if response.headers[\u0027content-type\u0027]:"},{"line_number":196,"context_line":"            return response.json()"},{"line_number":197,"context_line":"        else:"},{"line_number":198,"context_line":"            return response.content"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQkU%3D","line":195,"in_reply_to":"AAAAW3%2F%2FTDA%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"076706915abf839f743f3cbde8e3497668d98060","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            user_name\u003dcfg.CONF[GROUP].user_name,"},{"line_number":211,"context_line":"            password\u003dcfg.CONF[GROUP].password)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def create_domain(self, context, domain):"},{"line_number":214,"context_line":"        url \u003d \u0027/Secondary/%s\u0027 % domain[\u0027name\u0027].rstrip(\u0027.\u0027)"},{"line_number":215,"context_line":"        data \u003d {"},{"line_number":216,"context_line":"            \u0027masters\u0027: cfg.CONF[GROUP].masters"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FRM0%3D","line":213,"updated":"2014-04-15 16:57:29.000000000","message":"And a log statement in here","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            user_name\u003dcfg.CONF[GROUP].user_name,"},{"line_number":211,"context_line":"            password\u003dcfg.CONF[GROUP].password)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def create_domain(self, context, domain):"},{"line_number":214,"context_line":"        url \u003d \u0027/Secondary/%s\u0027 % domain[\u0027name\u0027].rstrip(\u0027.\u0027)"},{"line_number":215,"context_line":"        data \u003d {"},{"line_number":216,"context_line":"            \u0027masters\u0027: cfg.CONF[GROUP].masters"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQi4%3D","line":213,"in_reply_to":"AAAAW3%2F%2FRM0%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"793a1650934de5dfdadbc47b041a441e581ac658","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self.client.put(url, data\u003d{\u0027activate\u0027: True})"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def update_domain(self, context, domain):"},{"line_number":230,"context_line":"        LOG.debug(\u0027Discarding  call, not-applicable\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def delete_domain(self, context, domain):"},{"line_number":233,"context_line":"        url \u003d \u0027/Zone/%s\u0027 % domain[\u0027name\u0027].rstrip(\u0027.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FTC8%3D","line":230,"updated":"2014-04-15 14:06:07.000000000","message":"Looks like a copy and paste mistake - missing the method name","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self.client.put(url, data\u003d{\u0027activate\u0027: True})"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def update_domain(self, context, domain):"},{"line_number":230,"context_line":"        LOG.debug(\u0027Discarding  call, not-applicable\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def delete_domain(self, context, domain):"},{"line_number":233,"context_line":"        url \u003d \u0027/Zone/%s\u0027 % domain[\u0027name\u0027].rstrip(\u0027.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQjs%3D","line":230,"in_reply_to":"AAAAW3%2F%2FTC8%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"076706915abf839f743f3cbde8e3497668d98060","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def delete_domain(self, context, domain):"},{"line_number":233,"context_line":"        url \u003d \u0027/Zone/%s\u0027 % domain[\u0027name\u0027].rstrip(\u0027.\u0027)"},{"line_number":234,"context_line":"        self.client.delete(url)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def update_recordset(self, context, domain, recordset):"},{"line_number":237,"context_line":"        LOG.debug(\u0027Discarding update_recordset call, not-applicable\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FRNA%3D","line":234,"updated":"2014-04-15 16:57:29.000000000","message":"We could use a log statement here - for tracing activity in the backends","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"6fdde591e7b3e329d4fa6ac470ddb23a3461fbf9","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def delete_domain(self, context, domain):"},{"line_number":233,"context_line":"        url \u003d \u0027/Zone/%s\u0027 % domain[\u0027name\u0027].rstrip(\u0027.\u0027)"},{"line_number":234,"context_line":"        self.client.delete(url)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def update_recordset(self, context, domain, recordset):"},{"line_number":237,"context_line":"        LOG.debug(\u0027Discarding update_recordset call, not-applicable\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FQjg%3D","line":234,"in_reply_to":"AAAAW3%2F%2FRNA%3D","updated":"2014-04-15 18:51:44.000000000","message":"Done","commit_id":"e1360965e4cd273ea756f4d4259ce17ab049ae83"}]}
