)]}'
{"etc/trove/trove.conf.sample":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":70,"context_line":"trove_dns_support \u003d False"},{"line_number":71,"context_line":"#trove_dns_driver \u003d \"trove.dns.drivers.dyndns.DynamicDNS\""},{"line_number":72,"context_line":"#trove_dns_instance_entry_factory \u003d \"trove.dns.manager.dns_factory.DnsSimpleInstanceEntryFactory\""},{"line_number":73,"context_line":"#trove_dynamic_dns_domains \u003d lol.exapmle.com"},{"line_number":74,"context_line":"#trove_dynamic_dns_server \u003d dns.lol.example.com"},{"line_number":75,"context_line":"#trove_dynamic_dns_key_name \u003d key_name"},{"line_number":76,"context_line":"#trove_dynamic_dns_key_algorithm \u003d hmac-sha1"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAASn%2F%2FC2s%3D","line":73,"updated":"2013-09-13 00:41:20.000000000","message":"www.example.com (you misspelled exapmle). and lets leave lol out :P","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#trove_dns_driver \u003d \"trove.dns.drivers.dyndns.DynamicDNS\""},{"line_number":72,"context_line":"#trove_dns_instance_entry_factory \u003d \"trove.dns.manager.dns_factory.DnsSimpleInstanceEntryFactory\""},{"line_number":73,"context_line":"#trove_dynamic_dns_domains \u003d lol.exapmle.com"},{"line_number":74,"context_line":"#trove_dynamic_dns_server \u003d dns.lol.example.com"},{"line_number":75,"context_line":"#trove_dynamic_dns_key_name \u003d key_name"},{"line_number":76,"context_line":"#trove_dynamic_dns_key_algorithm \u003d hmac-sha1"},{"line_number":77,"context_line":"#trove_dynamic_dns_secret \u003d Wr1784mFhyTP9nqXIkWpRw\u003d\u003d"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAASn%2F%2FC2o%3D","line":74,"updated":"2013-09-13 00:41:20.000000000","message":"Same here. just do dns.example.com.","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"#trove_dynamic_dns_key_name \u003d key_name"},{"line_number":76,"context_line":"#trove_dynamic_dns_key_algorithm \u003d hmac-sha1"},{"line_number":77,"context_line":"#trove_dynamic_dns_secret \u003d Wr1784mFhyTP9nqXIkWpRw\u003d\u003d"},{"line_number":78,"context_line":"#trove_dynamic_dns_create_reverse \u003d True"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# Taskmanager queue name"},{"line_number":81,"context_line":"taskmanager_queue \u003d taskmanager"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAASn%2F%2FC2c%3D","line":78,"updated":"2013-09-13 00:41:20.000000000","message":"lets drop trove_ for these flags. Also, what is the purpose of adding \"dynamic\" to the flags? maybe ill see later in the review.","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[{"line_number":75,"context_line":"#trove_dynamic_dns_key_name \u003d key_name"},{"line_number":76,"context_line":"#trove_dynamic_dns_key_algorithm \u003d hmac-sha1"},{"line_number":77,"context_line":"#trove_dynamic_dns_secret \u003d Wr1784mFhyTP9nqXIkWpRw\u003d\u003d"},{"line_number":78,"context_line":"#trove_dynamic_dns_create_reverse \u003d True"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# Taskmanager queue name"},{"line_number":81,"context_line":"taskmanager_queue \u003d taskmanager"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAASn%2F%2FCVI%3D","line":78,"in_reply_to":"AAAASn%2F%2FC2c%3D","updated":"2013-09-13 05:29:41.000000000","message":"Because of drive orientation to work with dynamic dns servers","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"}],"trove/common/cfg.py":[{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"09b425345b2a08a71db76cd27d875955c32db85b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    cfg.IntOpt(\u0027periodic_interval\u0027, default\u003d60),"},{"line_number":60,"context_line":"    cfg.BoolOpt(\u0027trove_dns_support\u0027, default\u003dFalse),"},{"line_number":61,"context_line":"    cfg.ListOpt(\u0027dynamic_dns_domains\u0027,"},{"line_number":62,"context_line":"                default\u003d\u0027\u0027,"},{"line_number":63,"context_line":"                help\u003d\u0027A list of domains we are willing to send updates for\u0027),"},{"line_number":64,"context_line":"    cfg.StrOpt(\u0027dynamic_dns_server\u0027,"},{"line_number":65,"context_line":"               default\u003d\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FOQ8%3D","line":62,"updated":"2013-09-09 18:27:48.000000000","message":"Do you mean this?:\n\ndefault\u003d[]","commit_id":"b5605ecb85b47ea1831e079e11f061e1e0f85354"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"3976fcbdfde056ca971380184bc48f0c9d9b60b9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    cfg.IntOpt(\u0027periodic_interval\u0027, default\u003d60),"},{"line_number":60,"context_line":"    cfg.BoolOpt(\u0027trove_dns_support\u0027, default\u003dFalse),"},{"line_number":61,"context_line":"    cfg.ListOpt(\u0027dynamic_dns_domains\u0027,"},{"line_number":62,"context_line":"                default\u003d\u0027\u0027,"},{"line_number":63,"context_line":"                help\u003d\u0027A list of domains we are willing to send updates for\u0027),"},{"line_number":64,"context_line":"    cfg.StrOpt(\u0027dynamic_dns_server\u0027,"},{"line_number":65,"context_line":"               default\u003d\u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FONQ%3D","line":62,"in_reply_to":"AAAASn%2F%2FOQ8%3D","updated":"2013-09-09 19:11:05.000000000","message":"I agree Dan it should be []","commit_id":"b5605ecb85b47ea1831e079e11f061e1e0f85354"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":78,"context_line":"               help\u003d\u0027The TTL to use for DNS entries\u0027),"},{"line_number":79,"context_line":"    cfg.BoolOpt(\u0027dynamic_dns_create_reverse\u0027,"},{"line_number":80,"context_line":"                default\u003dTrue,"},{"line_number":81,"context_line":"                help\u003d\u0027Create reverse DNS entries as well\u0027),"},{"line_number":82,"context_line":"    cfg.StrOpt(\u0027db_api_implementation\u0027, default\u003d\u0027trove.db.sqlalchemy.api\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027mysql_pkg\u0027, default\u003d\u0027mysql-server-5.5\u0027),"},{"line_number":84,"context_line":"    cfg.StrOpt(\u0027percona_pkg\u0027, default\u003d\u0027percona-server-server-5.5\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC2U%3D","line":81,"updated":"2013-09-13 00:41:20.000000000","message":"So these dont have trove_ added to them. I like that. Make sure the ones in the config match.","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":6739,"name":"Erik Redding","email":"erik.redding@rackspace.com","username":"erik-redding"},"change_message_id":"c35fc95a1cf065bca6b831a73aeee95dc4f3da35","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    cfg.StrOpt(\u0027dns_driver\u0027, default\u003d\u0027trove.dns.driver.DnsDriver\u0027),"},{"line_number":66,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":67,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027),"},{"line_number":68,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\"),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027dns_account_id\u0027, default\u003d0),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027dns_auth_url\u0027, default\u003d\"\"),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027dns_domain_name\u0027, default\u003d\"\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2Ff5E%3D","side":"PARENT","line":68,"updated":"2013-09-25 17:30:27.000000000","message":"I\u0027d like to understand where these options can be specified elsewhere; considering most DNSaaS services require authentication, I would think this would break things.","commit_id":"40179e971d4210bc8363f2440f2fc7078cc4cc14"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"263b6f142f09d579ae1fd3d085da741078725625","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    cfg.StrOpt(\u0027dns_driver\u0027, default\u003d\u0027trove.dns.driver.DnsDriver\u0027),"},{"line_number":66,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":67,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027),"},{"line_number":68,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\"),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027dns_account_id\u0027, default\u003d0),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027dns_auth_url\u0027, default\u003d\"\"),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027dns_domain_name\u0027, default\u003d\"\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FfmE%3D","side":"PARENT","line":68,"in_reply_to":"AAAAS3%2F%2Ff2A%3D","updated":"2013-09-25 19:38:15.000000000","message":"How exactly? The host name specifies a root hostname to be used, and the instance ID is prefixed to it. So for example, it could be \"trove.mirantis.com\", and then instances would have DNS names such as \"instance-id.trove.mirantis.com\" or something.","commit_id":"40179e971d4210bc8363f2440f2fc7078cc4cc14"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2e658c27b5935ce1d73deb96723cc2f127bf58ae","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    cfg.StrOpt(\u0027dns_driver\u0027, default\u003d\u0027trove.dns.driver.DnsDriver\u0027),"},{"line_number":66,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":67,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027),"},{"line_number":68,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\"),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027dns_account_id\u0027, default\u003d0),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027dns_auth_url\u0027, default\u003d\"\"),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027dns_domain_name\u0027, default\u003d\"\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2Ff2A%3D","side":"PARENT","line":68,"in_reply_to":"AAAAS3%2F%2Ff5E%3D","updated":"2013-09-25 17:42:15.000000000","message":"This parameters were used by Rackspace. Designate (DNSaaS) doesn\u0027t need this parameters!","commit_id":"40179e971d4210bc8363f2440f2fc7078cc4cc14"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3bfc5322f5b21800b988d3f8ebbdb23cf8845f79","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    cfg.StrOpt(\u0027dns_driver\u0027, default\u003d\u0027trove.dns.driver.DnsDriver\u0027),"},{"line_number":66,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":67,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027),"},{"line_number":68,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\"),"},{"line_number":69,"context_line":"    cfg.IntOpt(\u0027dns_account_id\u0027, default\u003d0),"},{"line_number":70,"context_line":"    cfg.StrOpt(\u0027dns_auth_url\u0027, default\u003d\"\"),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027dns_domain_name\u0027, default\u003d\"\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FfXs%3D","side":"PARENT","line":68,"in_reply_to":"AAAAS3%2F%2FfmE%3D","updated":"2013-09-25 20:00:18.000000000","message":"Designate doesn\u0027t need nothing of it, because it could create any DNS needed component for instances without being stored in hard-code-style.\nAnd when you designed this part you, probably, had you idea how would Designate be integrated it Trove. So, i\u0027m telling you that removed lines is unnecassery for Designate!!\nAgreed only with lines 65-57 and nothing else!","commit_id":"40179e971d4210bc8363f2440f2fc7078cc4cc14"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"263b6f142f09d579ae1fd3d085da741078725625","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    cfg.StrOpt(\u0027dns_auth_url\u0027, default\u003d\"\"),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027dns_domain_name\u0027, default\u003d\"\"),"},{"line_number":72,"context_line":"    cfg.StrOpt(\u0027dns_username\u0027, default\u003d\"\", secret\u003dTrue),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027dns_passkey\u0027, default\u003d\"\", secret\u003dTrue),"},{"line_number":74,"context_line":"    cfg.StrOpt(\u0027dns_management_base_url\u0027, default\u003d\"\"),"},{"line_number":75,"context_line":"    cfg.IntOpt(\u0027dns_ttl\u0027, default\u003d300),"},{"line_number":76,"context_line":"    cfg.IntOpt(\u0027dns_domain_id\u0027, default\u003d1),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FflI%3D","side":"PARENT","line":73,"updated":"2013-09-25 19:38:15.000000000","message":"Ditto to these. Why won\u0027t Designate need an api user Trove will send requests on behalf of? \n\nWhen I designed this, my goal was to make this a driver that could be swapped out. It should be possible to make designate work without throwing out everything.","commit_id":"40179e971d4210bc8363f2440f2fc7078cc4cc14"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3bfc5322f5b21800b988d3f8ebbdb23cf8845f79","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    cfg.StrOpt(\u0027dns_auth_url\u0027, default\u003d\"\"),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027dns_domain_name\u0027, default\u003d\"\"),"},{"line_number":72,"context_line":"    cfg.StrOpt(\u0027dns_username\u0027, default\u003d\"\", secret\u003dTrue),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027dns_passkey\u0027, default\u003d\"\", secret\u003dTrue),"},{"line_number":74,"context_line":"    cfg.StrOpt(\u0027dns_management_base_url\u0027, default\u003d\"\"),"},{"line_number":75,"context_line":"    cfg.IntOpt(\u0027dns_ttl\u0027, default\u003d300),"},{"line_number":76,"context_line":"    cfg.IntOpt(\u0027dns_domain_id\u0027, default\u003d1),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FfXA%3D","side":"PARENT","line":73,"in_reply_to":"AAAAS3%2F%2FflI%3D","updated":"2013-09-25 20:00:18.000000000","message":"Officially Trove would supports only Designate as DNS service, nothing else. So, if you need something else - keep in in your upstream, but not in muster!","commit_id":"40179e971d4210bc8363f2440f2fc7078cc4cc14"}],"trove/common/exception.py":[{"author":{"_account_id":7593,"name":"Haomai Wang","email":"haomaiwang@gmail.com","username":"HaomaiWang"},"change_message_id":"5b8bbe6359e0248a6138627981742b01312afe4c","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"class DomainIncorrect(Invalid):"},{"line_number":259,"context_line":"    message \u003d _(\u0027The domain %(domain)s is not one of the configured dynamic \u0027\u0027\u0027"},{"line_number":260,"context_line":"                \u0027DNS domains of %(domainlist)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FPjQ%3D","line":259,"updated":"2013-09-09 12:47:45.000000000","message":"_(\u0027The domain %(domain)s is not one of the configured dynamic \u0027\u0027\u0027 \ntypo?","commit_id":"163883e1d46160530c7530d6417b4920e84b38eb"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8b40696870a65f2d809e94695a16fad27e79a773","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"class DomainIncorrect(Invalid):"},{"line_number":259,"context_line":"    message \u003d _(\u0027The domain %(domain)s is not one of the configured dynamic \u0027\u0027\u0027"},{"line_number":260,"context_line":"                \u0027DNS domains of %(domainlist)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAASn%2F%2FPUM%3D","line":259,"in_reply_to":"AAAASn%2F%2FPjQ%3D","updated":"2013-09-09 13:53:50.000000000","message":"ouch, yes, i missed it","commit_id":"163883e1d46160530c7530d6417b4920e84b38eb"}],"trove/dns/dns_factory/__init__.py":[{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"09b425345b2a08a71db76cd27d875955c32db85b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__author__ \u003d \u0027dmakogon\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FOQM%3D","line":1,"updated":"2013-09-09 18:27:48.000000000","message":"I don\u0027t think we do this for our projects.","commit_id":"b5605ecb85b47ea1831e079e11f061e1e0f85354"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"AAAASn%2F%2FC1o%3D","side":"PARENT","line":2,"updated":"2013-09-13 00:41:20.000000000","message":"Why did you remove this? you can have \u003e 1 copyright in the header.","commit_id":"1a8c62acb9414bbd8efd1ac0de084f63633e99cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"AAAASn%2F%2FCUQ%3D","side":"PARENT","line":2,"in_reply_to":"AAAASn%2F%2FC1o%3D","updated":"2013-09-13 05:29:41.000000000","message":"I didn\u0027t remove it, because of refactoring, my file is totally new. And this one was removed.","commit_id":"1a8c62acb9414bbd8efd1ac0de084f63633e99cd"}],"trove/dns/dns_factory/dns_factory.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"class DnsSimpleInstanceEntryFactory(object):"},{"line_number":34,"context_line":"    \"\"\"Creates a CNAME with the name being the instance name.\"\"\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def create_entry(self, name, address\u003dNone, domain\u003dNone, type\u003d\u0027CNAME\u0027):"},{"line_number":37,"context_line":"        return DnsEntry(name\u003dname,"},{"line_number":38,"context_line":"                        content\u003daddress,"},{"line_number":39,"context_line":"                        type\u003dtype,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC1g%3D","line":36,"updated":"2013-09-13 00:41:20.000000000","message":"I dont like that the two InstanceEntryFactories have different kwargs / args. Can we fix that?","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        msg \u003d (\u0027DnsEntry(name\u003d\"%s\", content\u003d\"%s\", type\u003d\"%s\", \u0027"},{"line_number":58,"context_line":"               \u0027ttl\u003d%s, priority\u003d%s, dns_zone\u003d%s)\u0027)"},{"line_number":59,"context_line":"        params \u003d (self.name, self.content, self.type, self.ttl, self.priority,"},{"line_number":60,"context_line":"                  self.dns_zone)"},{"line_number":61,"context_line":"        return msg % params"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC1Q%3D","line":60,"updated":"2013-09-13 00:41:20.000000000","message":"H703","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        msg \u003d (\u0027DnsEntry(name\u003d\"%s\", content\u003d\"%s\", type\u003d\"%s\", \u0027"},{"line_number":58,"context_line":"               \u0027ttl\u003d%s, priority\u003d%s, dns_zone\u003d%s)\u0027)"},{"line_number":59,"context_line":"        params \u003d (self.name, self.content, self.type, self.ttl, self.priority,"},{"line_number":60,"context_line":"                  self.dns_zone)"},{"line_number":61,"context_line":"        return msg % params"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FCUI%3D","line":60,"in_reply_to":"AAAASn%2F%2FC1Q%3D","updated":"2013-09-13 05:29:41.000000000","message":"ok","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return msg % params"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __str__(self):"},{"line_number":64,"context_line":"        return \"{ name:%s, content:%s, type:%s, zone:%s }\" % \\"},{"line_number":65,"context_line":"               (self.name, self.content, self.type, self.dns_zone)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC1M%3D","line":64,"updated":"2013-09-13 00:41:20.000000000","message":"H703","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        return msg % params"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __str__(self):"},{"line_number":64,"context_line":"        return \"{ name:%s, content:%s, type:%s, zone:%s }\" % \\"},{"line_number":65,"context_line":"               (self.name, self.content, self.type, self.dns_zone)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FCUE%3D","line":64,"in_reply_to":"AAAASn%2F%2FC1M%3D","updated":"2013-09-13 05:29:41.000000000","message":"ok","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"}],"trove/dns/driver_interface.py":[{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"3976fcbdfde056ca971380184bc48f0c9d9b60b9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class DNSDriver(object):"},{"line_number":21,"context_line":"    \"\"\"Defines the DNS manager interface.  Does nothing.\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FOFc%3D","line":20,"updated":"2013-09-09 19:11:05.000000000","message":"I\u0027m not sure what the value is here - I know this is a carryover from the previous code but interfaces in python are not necessary.","commit_id":"b5605ecb85b47ea1831e079e11f061e1e0f85354"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"ba74f1f99443a50587ba66bf3c4ebd04669b7dd3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def get_domains(self):"},{"line_number":27,"context_line":"        pass"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def create_entry(self, _name, _address, _type, _domain):"},{"line_number":30,"context_line":"        pass"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def delete_entry(self, _name, _domain):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2Faz0%3D","line":29,"updated":"2013-09-27 03:46:06.000000000","message":"Can we not name the variables with underscores?  Also should raise NotImplementedError().","commit_id":"af2b0ffc5fb3ee4dc39b2469b91ad0ad06ad27e2"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"ba74f1f99443a50587ba66bf3c4ebd04669b7dd3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def create_entry(self, _name, _address, _type, _domain):"},{"line_number":30,"context_line":"        pass"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def delete_entry(self, _name, _domain):"},{"line_number":33,"context_line":"        pass"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def modify_address(self, _name, _address, _domain):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2Fazw%3D","line":32,"updated":"2013-09-27 03:46:06.000000000","message":"Can you add some docstring, since this is an Interface","commit_id":"af2b0ffc5fb3ee4dc39b2469b91ad0ad06ad27e2"}],"trove/dns/drivers/__init__.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"AAAASn%2F%2FC1I%3D","side":"PARENT","line":2,"updated":"2013-09-13 00:41:20.000000000","message":"Again, no reason to remove. Just add Mirantis","commit_id":"1a8c62acb9414bbd8efd1ac0de084f63633e99cd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"AAAASn%2F%2FCT4%3D","side":"PARENT","line":2,"in_reply_to":"AAAASn%2F%2FC1I%3D","updated":"2013-09-13 05:29:41.000000000","message":"This files is tottaly different. But ok","commit_id":"1a8c62acb9414bbd8efd1ac0de084f63633e99cd"}],"trove/dns/drivers/dyndns.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#  Copyright 2013 Mirantis Inc."},{"line_number":4,"context_line":"#  All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC0I%3D","line":1,"updated":"2013-09-13 00:41:20.000000000","message":"please add docstrings for these methods.","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    import dns.update"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"except ImportError:"},{"line_number":26,"context_line":"    raise ImportError(\u0027Cannot import dnspython(1.11.1 or later) \u0027"},{"line_number":27,"context_line":"                      \u0027module! Please, install it.\u0027)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import socket"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC0s%3D","line":26,"updated":"2013-09-13 00:41:20.000000000","message":"Can this module work without dnspython? If not then there is no need to put a special message. it will fail. This needs to be in the requirements file too (https://github.com/openstack/requirements/blob/master/global-requirements.txt#L13)","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    import dns.update"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"except ImportError:"},{"line_number":26,"context_line":"    raise ImportError(\u0027Cannot import dnspython(1.11.1 or later) \u0027"},{"line_number":27,"context_line":"                      \u0027module! Please, install it.\u0027)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import socket"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FCT0%3D","line":26,"in_reply_to":"AAAASn%2F%2FC0s%3D","updated":"2013-09-13 05:29:41.000000000","message":"This module cannot work without dnspython","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class DynamicDNS(dns_driver.DNSDriver):"},{"line_number":40,"context_line":"    \"\"\"Driver for dynamic DNS updates to something like bind.\"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC08%3D","line":39,"updated":"2013-09-13 00:41:20.000000000","message":"Why are we calling this DynamicDNS?","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class DynamicDNS(dns_driver.DNSDriver):"},{"line_number":40,"context_line":"    \"\"\"Driver for dynamic DNS updates to something like bind.\"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FCTs%3D","line":39,"in_reply_to":"AAAASn%2F%2FC08%3D","updated":"2013-09-13 05:29:41.000000000","message":"Because thir driver for bind9 dynamic dns server","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            raise exception.DomainIncorrect("},{"line_number":50,"context_line":"                domain\u003ddomain, domainlist\u003dCONF.dynamic_dns_domains)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _make_update(self, domain):"},{"line_number":53,"context_line":"        return dns.update.Update(domain,"},{"line_number":54,"context_line":"                                 keyring\u003dself.keyring,"},{"line_number":55,"context_line":"                                 keyalgorithm\u003dCONF.dynamic_dns_key_algorithm)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC0k%3D","line":52,"updated":"2013-09-13 00:41:20.000000000","message":"def _update() is fine","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            raise exception.DomainIncorrect("},{"line_number":50,"context_line":"                domain\u003ddomain, domainlist\u003dCONF.dynamic_dns_domains)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _make_update(self, domain):"},{"line_number":53,"context_line":"        return dns.update.Update(domain,"},{"line_number":54,"context_line":"                                 keyring\u003dself.keyring,"},{"line_number":55,"context_line":"                                 keyalgorithm\u003dCONF.dynamic_dns_key_algorithm)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FCTo%3D","line":52,"in_reply_to":"AAAASn%2F%2FC0k%3D","updated":"2013-09-13 05:29:41.000000000","message":"ok","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"5d7e83fb952f15e5c97222dc96628afb6a952beb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        update.replace(name, CONF.dynamic_dns_ttl, record_type, str(address))"},{"line_number":71,"context_line":"        response \u003d dns.query.tcp(update, CONF.dynamic_dns_server)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if CONF.dynamic_dns_create_reverse:"},{"line_number":74,"context_line":"            fqdn \u003d \u0027%s.%s.\u0027 % (name, domain)"},{"line_number":75,"context_line":"            name \u003d str(dns.reversename.from_address(str(address)))"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FODQ%3D","line":73,"updated":"2013-09-09 19:20:09.000000000","message":"I am assuming that this is making an http call and therefore could have some problems with the connection or the request.  If so, does it handle the error conditions as expected?","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e81470e3e486279a3d4dbd8c1b94f5dc0c2e2521","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        update.replace(name, CONF.dynamic_dns_ttl, record_type, str(address))"},{"line_number":71,"context_line":"        response \u003d dns.query.tcp(update, CONF.dynamic_dns_server)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if CONF.dynamic_dns_create_reverse:"},{"line_number":74,"context_line":"            fqdn \u003d \u0027%s.%s.\u0027 % (name, domain)"},{"line_number":75,"context_line":"            name \u003d str(dns.reversename.from_address(str(address)))"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FN4k%3D","line":73,"in_reply_to":"AAAASn%2F%2FODQ%3D","updated":"2013-09-09 20:16:46.000000000","message":"Until line 89 there is no http call do dns server. But you are right, it should be bounded by try/except","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c69db161ad7eb5ff1ddd120472e3e0cf05c1fbfb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        update.replace(name, CONF.dynamic_dns_ttl, record_type, str(address))"},{"line_number":71,"context_line":"        response \u003d dns.query.tcp(update, CONF.dynamic_dns_server)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if CONF.dynamic_dns_create_reverse:"},{"line_number":74,"context_line":"            fqdn \u003d \u0027%s.%s.\u0027 % (name, domain)"},{"line_number":75,"context_line":"            name \u003d str(dns.reversename.from_address(str(address)))"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FMP8%3D","line":73,"in_reply_to":"AAAASn%2F%2FODQ%3D","updated":"2013-09-10 09:28:49.000000000","message":"Yes, every exeptions handled by dns.exception, so, it is not necassary to handle it in here.","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"734f618fd9f66cc1d1ec2ff3a21045b236be43b9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        response \u003d dns.query.tcp(update, CONF.dynamic_dns_server)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if CONF.dynamic_dns_create_reverse:"},{"line_number":74,"context_line":"            fqdn \u003d \u0027%s.%s.\u0027 % (name, domain)"},{"line_number":75,"context_line":"            name \u003d str(dns.reversename.from_address(str(address)))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"            domain \u003d \u0027.\u0027.join(name.split(\u0027.\u0027)[1:])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FC0g%3D","line":74,"updated":"2013-09-13 00:41:20.000000000","message":"H703","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c18aef59fd7982833508445aeffe6e94e32b62a1","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        response \u003d dns.query.tcp(update, CONF.dynamic_dns_server)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        if CONF.dynamic_dns_create_reverse:"},{"line_number":74,"context_line":"            fqdn \u003d \u0027%s.%s.\u0027 % (name, domain)"},{"line_number":75,"context_line":"            name \u003d str(dns.reversename.from_address(str(address)))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"            domain \u003d \u0027.\u0027.join(name.split(\u0027.\u0027)[1:])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FCTk%3D","line":74,"in_reply_to":"AAAASn%2F%2FC0g%3D","updated":"2013-09-13 05:29:41.000000000","message":"ok","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":6156,"name":"Justin Hopper","email":"justin.hopper@hp.com","username":"justin-hopper"},"change_message_id":"5d7e83fb952f15e5c97222dc96628afb6a952beb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        update.delete(name)"},{"line_number":103,"context_line":"        response \u003d dns.query.tcp(update, CONF.dynamic_dns_server)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        if CONF.dynamic_dns_create_reverse:"},{"line_number":106,"context_line":"            for n in self.get_entries_by_name(name, domain):"},{"line_number":107,"context_line":"                name \u003d str(dns.reversename.from_address(str(n)))"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FODM%3D","line":105,"updated":"2013-09-09 19:20:09.000000000","message":"same here","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"af008c6953e3efe89acd1bc029971378d15114c9","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        update.delete(name)"},{"line_number":103,"context_line":"        response \u003d dns.query.tcp(update, CONF.dynamic_dns_server)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        if CONF.dynamic_dns_create_reverse:"},{"line_number":106,"context_line":"            for n in self.get_entries_by_name(name, domain):"},{"line_number":107,"context_line":"                name \u003d str(dns.reversename.from_address(str(n)))"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2FKlo%3D","line":105,"in_reply_to":"AAAASn%2F%2FODM%3D","updated":"2013-09-10 18:58:36.000000000","message":"look at previous comment","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"}],"trove/dns/drivers/rsdns_driver.py":[{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1637232bdbed1ff60e3340a68479efd4457820a7","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                record_type\u003dentry.type,"},{"line_number":131,"context_line":"                record_ttl\u003dentry.ttl)"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                # TODO(someone): Bring back our good friend poll_until."},{"line_number":134,"context_line":"                while (future.ready is False):"},{"line_number":135,"context_line":"                    import time"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2F9EY%3D","line":133,"updated":"2013-09-16 16:41:39.000000000","message":"I think it\u0027s only fair if you\u0027re going to add a name to a TODO that you add your own.","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"1637232bdbed1ff60e3340a68479efd4457820a7","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                record_ttl\u003dentry.ttl)"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                # TODO(someone): Bring back our good friend poll_until."},{"line_number":134,"context_line":"                while (future.ready is False):"},{"line_number":135,"context_line":"                    import time"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"                    time.sleep(2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2F9Eg%3D","line":134,"updated":"2013-09-16 16:41:39.000000000","message":"I don\u0027t like seeing an import inside a while loop.","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"7f319f4af334f105b4d53ae01f9e9a81a0e9060a","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                record_ttl\u003dentry.ttl)"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                # TODO(someone): Bring back our good friend poll_until."},{"line_number":134,"context_line":"                while (future.ready is False):"},{"line_number":135,"context_line":"                    import time"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"                    time.sleep(2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2F8Ug%3D","line":134,"in_reply_to":"AAAAS3%2F%2F8WY%3D","updated":"2013-09-16 20:15:03.000000000","message":"Ok, you are right. But do not forget about give a punch to that guys from me))))","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"4e1c93a49d414dc6ff2e8f21bdd79854cabd2d4d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                record_ttl\u003dentry.ttl)"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                # TODO(someone): Bring back our good friend poll_until."},{"line_number":134,"context_line":"                while (future.ready is False):"},{"line_number":135,"context_line":"                    import time"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"                    time.sleep(2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2F8WY%3D","line":134,"in_reply_to":"AAAAS3%2F%2F8Xg%3D","updated":"2013-09-16 20:11:14.000000000","message":"Not an excuse! It\u0027s your code now, too!","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"fb2aa2c1d212572bc238eed0b9eb0a374ac5faeb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                record_ttl\u003dentry.ttl)"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                # TODO(someone): Bring back our good friend poll_until."},{"line_number":134,"context_line":"                while (future.ready is False):"},{"line_number":135,"context_line":"                    import time"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"                    time.sleep(2)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAS3%2F%2F8Xg%3D","line":134,"in_reply_to":"AAAAS3%2F%2F9Eg%3D","updated":"2013-09-16 20:04:24.000000000","message":"Tell it to Rax guys, who did this code)))","commit_id":"d7eea02903f73f024e12d68c9d426978b2d410b3"}],"trove/dns/factory/dns_factory.py":[{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"ba74f1f99443a50587ba66bf3c4ebd04669b7dd3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                              domain\u003dNone, rtype\u003d\u0027CNAME\u0027):"},{"line_number":31,"context_line":"        return None"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def create_entry(self, instance_id, content):"},{"line_number":34,"context_line":"        return None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def determine_host(self, instance_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAS3%2F%2Fazs%3D","line":33,"updated":"2013-09-27 03:46:06.000000000","message":"raise NotImplementedError() in interfaces.  Please add docstrings.","commit_id":"af2b0ffc5fb3ee4dc39b2469b91ad0ad06ad27e2"}],"trove/dns/manager.py":[{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"263b6f142f09d579ae1fd3d085da741078725625","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        entry \u003d self.entry_factory.create_entry(_name,"},{"line_number":56,"context_line":"                                                _address,"},{"line_number":57,"context_line":"                                                _type,"},{"line_number":58,"context_line":"                                                _domain)"},{"line_number":59,"context_line":"        if entry:"},{"line_number":60,"context_line":"            LOG.debug(\"Creating entry address %s.\" % str(entry))"},{"line_number":61,"context_line":"            self.driver.create_entry(entry.name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2Ffb8%3D","line":58,"updated":"2013-09-25 19:38:15.000000000","message":"The idea of the create_entry method being pluggable was that if you wanted to change how the entry was constructed you could. So if prefixing an instance ID to a domain name wasn\u0027t what you wanted, you could do something else by swapping out the entry factory here. \n\nBy not passing the instance_id this breaks this use case.","commit_id":"60158d8d649889be220fb93c99e415cb3a0d71cb"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3bfc5322f5b21800b988d3f8ebbdb23cf8845f79","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        entry \u003d self.entry_factory.create_entry(_name,"},{"line_number":56,"context_line":"                                                _address,"},{"line_number":57,"context_line":"                                                _type,"},{"line_number":58,"context_line":"                                                _domain)"},{"line_number":59,"context_line":"        if entry:"},{"line_number":60,"context_line":"            LOG.debug(\"Creating entry address %s.\" % str(entry))"},{"line_number":61,"context_line":"            self.driver.create_entry(entry.name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FfVY%3D","line":58,"in_reply_to":"AAAAS3%2F%2Ffb8%3D","updated":"2013-09-25 20:00:18.000000000","message":"Use case of prifixing instance id - is worth thing for DNS. That is why i detalize process of entry creation because of global floating_ip+dns context. Floating IPs would be reserved before instance provisioning. Than entry would be created with floating ip, that would be assigned to instance when it got provisioned.\nYour workflow relays on instance being provisioned, mine is not and this is the advantage!","commit_id":"60158d8d649889be220fb93c99e415cb3a0d71cb"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"263b6f142f09d579ae1fd3d085da741078725625","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        :param _domain: domain."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        entry \u003d self.entry_factory.create_entry(_name, domain\u003d_domain)"},{"line_number":76,"context_line":"        LOG.debug(\"Deleting instance entry with %s\" % str(entry))"},{"line_number":77,"context_line":"        if entry:"},{"line_number":78,"context_line":"            self.driver.delete_entry(entry.name, entry.domain)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2Ffao%3D","line":75,"updated":"2013-09-25 19:38:15.000000000","message":"Likewise, I don\u0027t get why the instance_id isn\u0027t passed here. What if someone wants to use it in a different way?","commit_id":"60158d8d649889be220fb93c99e415cb3a0d71cb"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3bfc5322f5b21800b988d3f8ebbdb23cf8845f79","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        :param _domain: domain."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        entry \u003d self.entry_factory.create_entry(_name, domain\u003d_domain)"},{"line_number":76,"context_line":"        LOG.debug(\"Deleting instance entry with %s\" % str(entry))"},{"line_number":77,"context_line":"        if entry:"},{"line_number":78,"context_line":"            self.driver.delete_entry(entry.name, entry.domain)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FfUw%3D","line":75,"in_reply_to":"AAAAS3%2F%2Ffao%3D","updated":"2013-09-25 20:00:18.000000000","message":"DNS as itself relays on names (they should be human-readible). But when you are passing instance id you relay on instance already being absolutely formed, that is why i\u0027m using mode detailed flow.","commit_id":"60158d8d649889be220fb93c99e415cb3a0d71cb"}],"trove/extensions/dns/__init__.py":[{"author":{"_account_id":6162,"name":"Dan Nguyen","email":"dan.nguyens.mail@gmail.com","username":"daniel-a-nguyen"},"change_message_id":"09b425345b2a08a71db76cd27d875955c32db85b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__author__ \u003d \u0027dmakogon\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAASn%2F%2FOPk%3D","line":1,"updated":"2013-09-09 18:27:48.000000000","message":"Please omit","commit_id":"b5605ecb85b47ea1831e079e11f061e1e0f85354"}]}
