)]}'
{"doc/source/api_ext/ext_floating_ip_dns.rst":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"98f66ee80995b0619e04e7d3108db11da74978f8","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        POST /v1.1/\u003ctenant_id\u003e/os-floating-ip-dns/"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    # Sample body:"},{"line_number":103,"context_line":"    { \u0027name\u0027: \u0027instance1\u0027,"},{"line_number":104,"context_line":"      \u0027ip\u0027: \u0027192.168.53.11\u0027,"},{"line_number":105,"context_line":"      \u0027dns_type\u0027: \u0027A\u0027,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"AAAAC3%2F%2F6lk%3D","line":102,"updated":"2011-12-26 16:11:51.000000000","message":"I think you should encase this request body in a dict like {\u0027dns_entry\u0027: ...}. That will keep this interface more in line with the rest of the Compute API.","commit_id":"3f9a4da575a1cb38936a8e5758df010c4cc92d2b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"338146122fe2be6731bd90b206b4e70c6dd6186a","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Name"},{"line_number":12,"context_line":"        Floating IP DNS"},{"line_number":13,"context_line":"        "},{"line_number":14,"context_line":"Namespace"},{"line_number":15,"context_line":"        http://docs.openstack.org/ext/floating_ip_dns/api/v1.1"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"AAAAC3%2F%2F6Vk%3D","line":13,"updated":"2011-12-27 20:48:56.000000000","message":"You have a lot of trailing white space in this file.  It\u0027s not a PEP8 error, since this is documentation, but I would like to see it cleaned up...","commit_id":"10fc6240df86a023560ea843a64f8f1db9bae384"}],"nova/api/openstack/v2/contrib/floating_ip_dns.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"90c3539b3c4fb8803b3e100dd894a59cb87c20ea","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        super(FloatingIPDNSController, self).__init__()"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def show(self, req, id):"},{"line_number":76,"context_line":"        \"\"\"Return a list of dns entries.  If ipid is specified, query for"},{"line_number":77,"context_line":"           names.  if name is specified, query for ips."},{"line_number":78,"context_line":"           Quoted domain (aka \u0027zone\u0027) specified as id.\"\"\""},{"line_number":79,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAC3%2F%2F7ww%3D","line":76,"updated":"2011-12-20 15:20:02.000000000","message":"Can you put an underscore in \u0027ipid\u0027","commit_id":"4831744715666427affe0d821a5367637b6b71aa"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"75828060798c19c2ae22fe34be0a5cad1dc33da5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import urllib"},{"line_number":18,"context_line":"import webob"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.api.openstack import wsgi"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7nE%3D","line":17,"updated":"2011-12-20 20:50:52.000000000","message":"you need a line separating these two imports. See HACKING for justification","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"18adbccf5a4f62af196f87e7e3430a7dbf19c633","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import urllib"},{"line_number":18,"context_line":"import webob"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.api.openstack import wsgi"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7h0%3D","line":17,"in_reply_to":"AAAAC3%2F%2F7nE%3D","updated":"2011-12-21 03:22:58.000000000","message":"Done","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"75828060798c19c2ae22fe34be0a5cad1dc33da5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from nova.api.openstack import wsgi"},{"line_number":21,"context_line":"from nova.api.openstack import xmlutil"},{"line_number":22,"context_line":"from nova.api.openstack.v2 import extensions"},{"line_number":23,"context_line":"from nova import compute"},{"line_number":24,"context_line":"from nova import exception"},{"line_number":25,"context_line":"from nova import log as logging"},{"line_number":26,"context_line":"from nova import network"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7nI%3D","line":23,"updated":"2011-12-20 20:50:52.000000000","message":"unused import","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"18adbccf5a4f62af196f87e7e3430a7dbf19c633","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from nova.api.openstack import wsgi"},{"line_number":21,"context_line":"from nova.api.openstack import xmlutil"},{"line_number":22,"context_line":"from nova.api.openstack.v2 import extensions"},{"line_number":23,"context_line":"from nova import compute"},{"line_number":24,"context_line":"from nova import exception"},{"line_number":25,"context_line":"from nova import log as logging"},{"line_number":26,"context_line":"from nova import network"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7hw%3D","line":23,"in_reply_to":"AAAAC3%2F%2F7nI%3D","updated":"2011-12-21 03:22:58.000000000","message":"Done","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"75828060798c19c2ae22fe34be0a5cad1dc33da5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from nova import exception"},{"line_number":25,"context_line":"from nova import log as logging"},{"line_number":26,"context_line":"from nova import network"},{"line_number":27,"context_line":"from nova import rpc"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(\u0027nova.api.openstack.v2.contrib.floating_ip_dns\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7nA%3D","line":27,"updated":"2011-12-20 20:50:52.000000000","message":"unused import","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"18adbccf5a4f62af196f87e7e3430a7dbf19c633","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from nova import exception"},{"line_number":25,"context_line":"from nova import log as logging"},{"line_number":26,"context_line":"from nova import network"},{"line_number":27,"context_line":"from nova import rpc"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(\u0027nova.api.openstack.v2.contrib.floating_ip_dns\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7hs%3D","line":27,"in_reply_to":"AAAAC3%2F%2F7nA%3D","updated":"2011-12-21 03:22:58.000000000","message":"Done","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"75828060798c19c2ae22fe34be0a5cad1dc33da5","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def _unquote_zone(zone):"},{"line_number":60,"context_line":"    \"\"\""},{"line_number":61,"context_line":"    Zone names tend to have .\u0027s in them.  Urllib doesn\u0027t quote dots,"},{"line_number":62,"context_line":"    but Routes tends to choke on them, so we need an extra level of"},{"line_number":63,"context_line":"    by-hand quoting here."},{"line_number":64,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7m8%3D","line":61,"updated":"2011-12-20 20:50:52.000000000","message":"See HACKING for preferred format of docstrings.","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"18adbccf5a4f62af196f87e7e3430a7dbf19c633","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def _unquote_zone(zone):"},{"line_number":60,"context_line":"    \"\"\""},{"line_number":61,"context_line":"    Zone names tend to have .\u0027s in them.  Urllib doesn\u0027t quote dots,"},{"line_number":62,"context_line":"    but Routes tends to choke on them, so we need an extra level of"},{"line_number":63,"context_line":"    by-hand quoting here."},{"line_number":64,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7ho%3D","line":61,"in_reply_to":"AAAAC3%2F%2F7m8%3D","updated":"2011-12-21 03:22:58.000000000","message":"Done","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"75828060798c19c2ae22fe34be0a5cad1dc33da5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            entrylist \u003d [{\u0027zone\u0027: zone,"},{"line_number":102,"context_line":"                          \u0027id\u0027: ip_id,"},{"line_number":103,"context_line":"                          \u0027name\u0027: name,"},{"line_number":104,"context_line":"                          \u0027ip\u0027:entry} for entry in entries]"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            entrylist \u003d []"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7m0%3D","line":104,"updated":"2011-12-20 20:50:52.000000000","message":"1) You can factor this block out and move it out of this set of conditionals\n\n2) This list comprehension looks a bit wonky being split across 4 lines. Can you break the dict formatting out into its own function?","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"18adbccf5a4f62af196f87e7e3430a7dbf19c633","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            entrylist \u003d [{\u0027zone\u0027: zone,"},{"line_number":102,"context_line":"                          \u0027id\u0027: ip_id,"},{"line_number":103,"context_line":"                          \u0027name\u0027: name,"},{"line_number":104,"context_line":"                          \u0027ip\u0027:entry} for entry in entries]"},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            entrylist \u003d []"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7hk%3D","line":104,"in_reply_to":"AAAAC3%2F%2F7m0%3D","updated":"2011-12-21 03:22:58.000000000","message":"1)  Can I?  the first varies by name, the second by ip.\n\n2)  Done.","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"75828060798c19c2ae22fe34be0a5cad1dc33da5","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        if not body:"},{"line_number":127,"context_line":"            raise exc.HTTPUnprocessableEntity()"},{"line_number":128,"context_line":"        ip_id \u003d body[\u0027ip_id\u0027]"},{"line_number":129,"context_line":"        name \u003d body[\u0027name\u0027]"},{"line_number":130,"context_line":"        dns_type \u003d body[\u0027dns_type\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7mk%3D","line":127,"updated":"2011-12-20 20:50:52.000000000","message":"This can be more robustly handled by placing a try/except around the following 4 lines and catch (TypeError, KeyError).","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"18adbccf5a4f62af196f87e7e3430a7dbf19c633","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        if not body:"},{"line_number":127,"context_line":"            raise exc.HTTPUnprocessableEntity()"},{"line_number":128,"context_line":"        ip_id \u003d body[\u0027ip_id\u0027]"},{"line_number":129,"context_line":"        name \u003d body[\u0027name\u0027]"},{"line_number":130,"context_line":"        dns_type \u003d body[\u0027dns_type\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAC3%2F%2F7hg%3D","line":127,"in_reply_to":"AAAAC3%2F%2F7mk%3D","updated":"2011-12-21 03:22:58.000000000","message":"Done","commit_id":"99d1192409ab51a14df7a1f5da9a752d4235b3b6"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"85e3d5311fe4beceea26cc93922dadfc51a3ed35","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def _translate_dns_entry_view(dns_entry):"},{"line_number":33,"context_line":"    result \u003d {}"},{"line_number":34,"context_line":"    try:"},{"line_number":35,"context_line":"        result[\u0027ip\u0027] \u003d dns_entry[\u0027ip\u0027]"},{"line_number":36,"context_line":"    except (TypeError, KeyError):"},{"line_number":37,"context_line":"        result[\u0027ip\u0027] \u003d None"},{"line_number":38,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7Oc%3D","line":35,"updated":"2011-12-21 22:33:27.000000000","message":"Are you really expecting dns_entry to be something other than a dict here? The code that uses this function seems to always ensure dns_entry is a dict.\n\nIf so, it might be cleaner to use:\n\nresult[\u0027ip\u0027] \u003d dns_entry.get(\u0027ip\u0027)","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"e24695d50aa52c1b2d535a17c1dece131a203823","unresolved":false,"context_lines":[{"line_number":32,"context_line":"def _translate_dns_entry_view(dns_entry):"},{"line_number":33,"context_line":"    result \u003d {}"},{"line_number":34,"context_line":"    try:"},{"line_number":35,"context_line":"        result[\u0027ip\u0027] \u003d dns_entry[\u0027ip\u0027]"},{"line_number":36,"context_line":"    except (TypeError, KeyError):"},{"line_number":37,"context_line":"        result[\u0027ip\u0027] \u003d None"},{"line_number":38,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7Kc%3D","line":35,"in_reply_to":"AAAAC3%2F%2F7Oc%3D","updated":"2011-12-22 05:09:02.000000000","message":"I was blindly imitating the code in floating_ips.py; your suggestion is clearly better.","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"85e3d5311fe4beceea26cc93922dadfc51a3ed35","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        zonelist \u003d [{\u0027zone\u0027: zone} for zone in zones]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        zl \u003d _translate_dns_entries_view(zonelist)"},{"line_number":120,"context_line":"        return _translate_dns_entries_view(zonelist)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def create(self, req, body):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7OY%3D","line":119,"updated":"2011-12-21 22:33:27.000000000","message":"Why is this called twice with the first return value discarded?","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"e24695d50aa52c1b2d535a17c1dece131a203823","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        zonelist \u003d [{\u0027zone\u0027: zone} for zone in zones]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        zl \u003d _translate_dns_entries_view(zonelist)"},{"line_number":120,"context_line":"        return _translate_dns_entries_view(zonelist)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def create(self, req, body):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7KY%3D","line":119,"in_reply_to":"AAAAC3%2F%2F7OY%3D","updated":"2011-12-22 05:09:02.000000000","message":"Done","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"}],"nova/exception.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"70c137154682748e43505bc1f6dff0f543f11d90","unresolved":false,"context_lines":[{"line_number":554,"context_line":"class FloatingIpNotFound(NotFound):"},{"line_number":555,"context_line":"    message \u003d _(\"Floating ip not found for id %(id)s.\")"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"class FloatingIpDNSExists(NotFound):"},{"line_number":558,"context_line":"    message \u003d _(\"The DNS entry %(name)s already exists in zone %(zone)s.\")"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"class FloatingIpNotFoundForAddress(FloatingIpNotFound):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAC3%2F%2F6i0%3D","line":557,"updated":"2011-12-26 21:21:37.000000000","message":"This should inherit from Conflict. It\u0027s the exact opposite of NotFound.","commit_id":"5a58679ed0f93f3efd49371fb69f6870c2094628"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"de9b9623c31c52fc1abc9d655ba2c8d4d76b2c1c","unresolved":false,"context_lines":[{"line_number":554,"context_line":"class FloatingIpNotFound(NotFound):"},{"line_number":555,"context_line":"    message \u003d _(\"Floating ip not found for id %(id)s.\")"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"class FloatingIpDNSExists(NotFound):"},{"line_number":558,"context_line":"    message \u003d _(\"The DNS entry %(name)s already exists in zone %(zone)s.\")"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"class FloatingIpNotFoundForAddress(FloatingIpNotFound):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAC3%2F%2F6g0%3D","line":557,"in_reply_to":"AAAAC3%2F%2F6i0%3D","updated":"2011-12-26 23:15:39.000000000","message":"I don\u0027t think there is such a thing as Conflict, but I\u0027ve made this inherit from Invalid which is what the other \u0027exists\u0027 exceptions seem to do.","commit_id":"5a58679ed0f93f3efd49371fb69f6870c2094628"}],"nova/flags.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"90c3539b3c4fb8803b3e100dd894a59cb87c20ea","unresolved":false,"context_lines":[{"line_number":370,"context_line":"              \u0027DNS Manager for instance IPs\u0027)"},{"line_number":371,"context_line":"DEFINE_string(\u0027instance_dns_zone\u0027, \u0027\u0027,"},{"line_number":372,"context_line":"              \u0027DNS Zone for instance IPs\u0027)"},{"line_number":373,"context_line":"DEFINE_string(\u0027floating_dns_manager\u0027,"},{"line_number":374,"context_line":"              \u0027nova.network.dns_driver.DNSDriver\u0027,"},{"line_number":375,"context_line":"              \u0027DNS Manager for floating IPs\u0027)"},{"line_number":376,"context_line":"DEFINE_string(\u0027floating_dns_zones\u0027, \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAC3%2F%2F7wo%3D","line":373,"updated":"2011-12-20 15:20:02.000000000","message":"Can you call this \u0027floating_ip_dns_manager\u0027? I think makes it more obvious what it is.","commit_id":"4831744715666427affe0d821a5367637b6b71aa"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"90c3539b3c4fb8803b3e100dd894a59cb87c20ea","unresolved":false,"context_lines":[{"line_number":373,"context_line":"DEFINE_string(\u0027floating_dns_manager\u0027,"},{"line_number":374,"context_line":"              \u0027nova.network.dns_driver.DNSDriver\u0027,"},{"line_number":375,"context_line":"              \u0027DNS Manager for floating IPs\u0027)"},{"line_number":376,"context_line":"DEFINE_string(\u0027floating_dns_zones\u0027, \u0027\u0027,"},{"line_number":377,"context_line":"              \u0027DNS Zones for floating IPs (currently unsupported)\u0027)"},{"line_number":378,"context_line":"DEFINE_string(\u0027network_manager\u0027, \u0027nova.network.manager.VlanManager\u0027,"},{"line_number":379,"context_line":"              \u0027Manager for network\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAC3%2F%2F7wk%3D","line":376,"updated":"2011-12-20 15:20:02.000000000","message":"Same here, \u0027floating_ip_dns_zones\u0027. And can you give an example in the description? It\u0027s unclear how to use this.","commit_id":"4831744715666427affe0d821a5367637b6b71aa"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"85e3d5311fe4beceea26cc93922dadfc51a3ed35","unresolved":false,"context_lines":[{"line_number":375,"context_line":"              \u0027DNS Manager for floating IPs\u0027)"},{"line_number":376,"context_line":"DEFINE_string(\u0027floating_ip_dns_zones\u0027, \u0027\u0027,"},{"line_number":377,"context_line":"              \u0027Colon-separated list of DNS zones for floating IPs.\u0027"},{"line_number":378,"context_line":"              \u0027e.g. \"example.org:example.com:example.gov\"\u0027)"},{"line_number":379,"context_line":"DEFINE_string(\u0027network_manager\u0027, \u0027nova.network.manager.VlanManager\u0027,"},{"line_number":380,"context_line":"              \u0027Manager for network\u0027)"},{"line_number":381,"context_line":"DEFINE_string(\u0027volume_manager\u0027, \u0027nova.volume.manager.VolumeManager\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7OI%3D","line":378,"updated":"2011-12-21 22:33:27.000000000","message":"Why not just use DEFINE_multistring? Seems like it would be more consistent and require less work.","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"e24695d50aa52c1b2d535a17c1dece131a203823","unresolved":false,"context_lines":[{"line_number":375,"context_line":"              \u0027DNS Manager for floating IPs\u0027)"},{"line_number":376,"context_line":"DEFINE_string(\u0027floating_ip_dns_zones\u0027, \u0027\u0027,"},{"line_number":377,"context_line":"              \u0027Colon-separated list of DNS zones for floating IPs.\u0027"},{"line_number":378,"context_line":"              \u0027e.g. \"example.org:example.com:example.gov\"\u0027)"},{"line_number":379,"context_line":"DEFINE_string(\u0027network_manager\u0027, \u0027nova.network.manager.VlanManager\u0027,"},{"line_number":380,"context_line":"              \u0027Manager for network\u0027)"},{"line_number":381,"context_line":"DEFINE_string(\u0027volume_manager\u0027, \u0027nova.volume.manager.VolumeManager\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7Kk%3D","line":378,"in_reply_to":"AAAAC3%2F%2F7OI%3D","updated":"2011-12-22 05:09:02.000000000","message":"Done","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"}],"nova/network/manager.py":[{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"88874314219033575ffe5799225863049f488160","unresolved":false,"context_lines":[{"line_number":457,"context_line":"    def get_dns_entries_by_name(self, context, address, dns_zone):"},{"line_number":458,"context_line":"        return self.floating_dns_manager.get_entries_by_name(name,"},{"line_number":459,"context_line":"                                                             dns_zone)"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"class NetworkManager(manager.SchedulerDependentManager):"},{"line_number":463,"context_line":"    \"\"\"Implements common network manager functionality."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F8as%3D","line":460,"updated":"2011-12-15 22:37:40.000000000","message":"Should these calls pass through the manager, or should they go directly from the network api to the dns driver?","commit_id":"3f515829986fe67b69500607cabf96776c162c92"}],"nova/network/minidns.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"85e3d5311fe4beceea26cc93922dadfc51a3ed35","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            f.close()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def get_zones(self):"},{"line_number":44,"context_line":"        return flags.FLAGS.floating_ip_dns_zones.strip(\"\\\u0027\\\"\").split(\":\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def qualify(self, name, zone):"},{"line_number":47,"context_line":"        if zone:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7OE%3D","line":44,"updated":"2011-12-21 22:33:27.000000000","message":"Will there really be quotes in the option?","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"e24695d50aa52c1b2d535a17c1dece131a203823","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            f.close()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def get_zones(self):"},{"line_number":44,"context_line":"        return flags.FLAGS.floating_ip_dns_zones.strip(\"\\\u0027\\\"\").split(\":\")"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def qualify(self, name, zone):"},{"line_number":47,"context_line":"        if zone:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAC3%2F%2F7Kg%3D","line":44,"in_reply_to":"AAAAC3%2F%2F7OE%3D","updated":"2011-12-22 05:09:02.000000000","message":"Done","commit_id":"5eef6c60e547e44166de9747e0b7718d395bfc56"}],"nova/tests/test_network.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"70c137154682748e43505bc1f6dff0f543f11d90","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        self.network.deallocate_for_instance(self.context,"},{"line_number":1148,"context_line":"                instance_id\u003dinstance_ref[\u0027id\u0027])"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    def test_floating_dns(self):"},{"line_number":1151,"context_line":"        api \u003d network_api.API()"},{"line_number":1152,"context_line":"        zone1 \u003d \"example.org\""},{"line_number":1153,"context_line":"        zone2 \u003d \"example.com\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAC3%2F%2F6iw%3D","line":1150,"updated":"2011-12-26 21:21:37.000000000","message":"Is there any way you can break this test up into multiple test  methods?","commit_id":"5a58679ed0f93f3efd49371fb69f6870c2094628"},{"author":{"_account_id":1998,"name":"andrewbogott","username":"andrewbogott","inactive":true},"change_message_id":"de9b9623c31c52fc1abc9d655ba2c8d4d76b2c1c","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        self.network.deallocate_for_instance(self.context,"},{"line_number":1148,"context_line":"                instance_id\u003dinstance_ref[\u0027id\u0027])"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    def test_floating_dns(self):"},{"line_number":1151,"context_line":"        api \u003d network_api.API()"},{"line_number":1152,"context_line":"        zone1 \u003d \"example.org\""},{"line_number":1153,"context_line":"        zone2 \u003d \"example.com\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAC3%2F%2F6gc%3D","line":1150,"in_reply_to":"AAAAC3%2F%2F6iw%3D","updated":"2011-12-26 23:15:39.000000000","message":"Done","commit_id":"5a58679ed0f93f3efd49371fb69f6870c2094628"}]}
