)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"1f274b30f7c41c6b3b92435cf2dd6c4f86002502","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"  Paritally-implements: blueprint server-pools-storage"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"  What\u0027s left to do:"},{"line_number":18,"context_line":"  - Remove the old server table and rest of the"},{"line_number":19,"context_line":"    server api code"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a961159_57e34904","line":17,"updated":"2015-01-08 11:01:44.000000000","message":"Will this be done in this patchset or later one ? :)","commit_id":"b79b72213d22c1127d1884a13df77957e17653aa"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9ab3d1a96f21d492d31920a5e525c57950bce924","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"  Paritally-implements: blueprint server-pools-storage"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"  What\u0027s left to do:"},{"line_number":18,"context_line":"  - Remove the old server table and rest of the"},{"line_number":19,"context_line":"    server api code"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3a961159_e1263066","line":17,"in_reply_to":"3a961159_57e34904","updated":"2015-01-08 14:32:30.000000000","message":"It will be done in a different patchset. I think it\u0027s good practice to separate migrations that would not be backward compatible and would cause down time in a production system. If you made the db changes all at once and eliminated the db table, it could break the other nodes that hadn\u0027t had their code upgraded yet. Not that big a deal in this instance since it\u0027s an admin command, but I think it\u0027s a good practice in general and something we should be thinking about in all of our future migrations.","commit_id":"b79b72213d22c1127d1884a13df77957e17653aa"}],"designate/api/v1/servers.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    created_pool_attribute \u003d get_central_api().find_pool_attribute("},{"line_number":86,"context_line":"        context\u003dcontext,"},{"line_number":87,"context_line":"        criterion\u003dpa_values"},{"line_number":88,"context_line":"    )"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Convert the PoolAttribute to a Server so we can validate with the"},{"line_number":91,"context_line":"    # original schema and display"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_1c04e548","line":88,"updated":"2014-12-10 21:53:01.000000000","message":"Kiall did not want separate calls for pool attribute. I think that can be done with a few additional calls.\n\nHere for e.g. we can save the return value from the get_central_api().update_pool and loop through the nameservers in it to get the server we created.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"4abc2baf69c59b590c08006ede4b0f5265a57067","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    created_pool_attribute \u003d get_central_api().find_pool_attribute("},{"line_number":86,"context_line":"        context\u003dcontext,"},{"line_number":87,"context_line":"        criterion\u003dpa_values"},{"line_number":88,"context_line":"    )"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Convert the PoolAttribute to a Server so we can validate with the"},{"line_number":91,"context_line":"    # original schema and display"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_1b53e039","line":88,"in_reply_to":"3a961159_1c04e548","updated":"2014-12-17 12:34:14.000000000","message":"Done","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    context \u003d flask.request.environ.get(\u0027context\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    nameserver \u003d get_central_api().\\"},{"line_number":121,"context_line":"        get_pool_attribute(context\u003dcontext, pool_attribute_id\u003dserver_id)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    server \u003d _poolattribute_to_server(nameserver)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_dc9dfd0b","line":121,"updated":"2014-12-10 21:53:01.000000000","message":"Instead of get_pool_attribute, we can get the fetch the default pool and loop through the name servers and return the correct nameserver","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"4abc2baf69c59b590c08006ede4b0f5265a57067","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    context \u003d flask.request.environ.get(\u0027context\u0027)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    nameserver \u003d get_central_api().\\"},{"line_number":121,"context_line":"        get_pool_attribute(context\u003dcontext, pool_attribute_id\u003dserver_id)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    server \u003d _poolattribute_to_server(nameserver)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_4c382dd3","line":121,"in_reply_to":"3a961159_dc9dfd0b","updated":"2014-12-17 12:34:14.000000000","message":"Done","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    nameservers \u003d pool.nameservers"},{"line_number":138,"context_line":"    for ns in nameservers:"},{"line_number":139,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":140,"context_line":"            index \u003d nameservers.index(ns)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Get the nameserver from the pool so we can update it"},{"line_number":143,"context_line":"    nameserver \u003d nameservers.pop(index)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_f00d7f38","line":140,"updated":"2014-12-10 21:53:01.000000000","message":"What if the user tries to update with an id that does not match any server id?","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"4abc2baf69c59b590c08006ede4b0f5265a57067","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    nameservers \u003d pool.nameservers"},{"line_number":138,"context_line":"    for ns in nameservers:"},{"line_number":139,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":140,"context_line":"            index \u003d nameservers.index(ns)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    # Get the nameserver from the pool so we can update it"},{"line_number":143,"context_line":"    nameserver \u003d nameservers.pop(index)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_0c5b85f6","line":140,"in_reply_to":"3a961159_f00d7f38","updated":"2014-12-17 12:34:14.000000000","message":"It throws a 404 not found and I added a test for it","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":164,"context_line":"def delete_server(server_id):"},{"line_number":165,"context_line":"    context \u003d flask.request.environ.get(\u0027context\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    get_central_api().delete_pool_attribute(context, server_id)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    return flask.Response(status\u003d200)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_1c8b05c4","line":167,"updated":"2014-12-10 21:53:01.000000000","message":"We can do something similar to update_server here - fetch the default pool, remove the nameserver and call update_pool","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"4abc2baf69c59b590c08006ede4b0f5265a57067","unresolved":false,"context_lines":[{"line_number":164,"context_line":"def delete_server(server_id):"},{"line_number":165,"context_line":"    context \u003d flask.request.environ.get(\u0027context\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    get_central_api().delete_pool_attribute(context, server_id)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    return flask.Response(status\u003d200)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_ba88df71","line":167,"in_reply_to":"3a961159_1c8b05c4","updated":"2014-12-17 12:34:14.000000000","message":"This one doesn\u0027t make sense to do that way to me. If you do it that way, then you get loose the correct response code and you\u0027d be trying to recreate it.\n\nI still think all the ones with an id should be handled directly with the database and not try to go through pools.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    pool \u003d central_api.get_pool(context, default_pool_id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # Add the new PoolAttribute to the pool as a nameserver"},{"line_number":80,"context_line":"    pool.nameservers.append(pool_attribute)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    # Update the pool"},{"line_number":83,"context_line":"    updated_pool \u003d central_api.update_pool(context, pool)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0eab041f","line":80,"updated":"2014-12-17 14:31:38.000000000","message":"I think we\u0027re doing things a little weird here, specifically around setting a raw pool attribute into the nameservers property, e.g.:\n\n    pool.nameservers \u003d [{id:3, pool_id: 12, key: nameserver, value: ns1}, { .. }]\n\nThis feels a little wrong to me, and if we\u0027re dealing with the nameservers in \"raw\" attribute style, we should probably just be working on the `pool.attributes` property directly. And, In other areas of the code - pool.nameservers is a `NameserverList` object, rather than a PoolAttributeList object..","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    pool \u003d central_api.get_pool(context, default_pool_id)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # Add the new PoolAttribute to the pool as a nameserver"},{"line_number":80,"context_line":"    pool.nameservers.append(pool_attribute)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    # Update the pool"},{"line_number":83,"context_line":"    updated_pool \u003d central_api.update_pool(context, pool)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_2b9fe7b5","line":80,"in_reply_to":"3a961159_0eab041f","updated":"2014-12-30 21:30:28.000000000","message":"So, I changed it to a NameServer object and then I append it to the NameserverList. Is that what you mean?","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    # Go through the pool.nameservers to find the right one to get the ID"},{"line_number":86,"context_line":"    for ns in updated_pool.nameservers:"},{"line_number":87,"context_line":"        if ns.value \u003d\u003d pa_values[\u0027value\u0027]:"},{"line_number":88,"context_line":"            created_nameserver \u003d ns"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Convert the PoolAttribute to a Server so we can validate with the"},{"line_number":91,"context_line":"    # original schema and display"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_8e4d349c","line":88,"updated":"2014-12-17 14:31:38.000000000","message":"After we find the match, we should `break` to stop iterating the list any further.","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    # Go through the pool.nameservers to find the right one to get the ID"},{"line_number":86,"context_line":"    for ns in updated_pool.nameservers:"},{"line_number":87,"context_line":"        if ns.value \u003d\u003d pa_values[\u0027value\u0027]:"},{"line_number":88,"context_line":"            created_nameserver \u003d ns"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    # Convert the PoolAttribute to a Server so we can validate with the"},{"line_number":91,"context_line":"    # original schema and display"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_4ba43308","line":88,"in_reply_to":"3a961159_8e4d349c","updated":"2014-12-30 21:30:28.000000000","message":"Done","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    # Get the desired nameserver from the pool"},{"line_number":131,"context_line":"    for ns in pool.nameservers:"},{"line_number":132,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":133,"context_line":"            nameserver \u003d ns"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    # If the nameserver wasn\u0027t found, raise an exception"},{"line_number":136,"context_line":"    if nameserver.id !\u003d server_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_6182d953","line":133,"updated":"2014-12-17 14:31:38.000000000","message":"After we find the match, we should `break` to stop iterating the list any further.","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    # Get the desired nameserver from the pool"},{"line_number":131,"context_line":"    for ns in pool.nameservers:"},{"line_number":132,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":133,"context_line":"            nameserver \u003d ns"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    # If the nameserver wasn\u0027t found, raise an exception"},{"line_number":136,"context_line":"    if nameserver.id !\u003d server_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_cbb74339","line":133,"in_reply_to":"3a961159_6182d953","updated":"2014-12-30 21:30:28.000000000","message":"Done","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    nameservers \u003d pool.nameservers"},{"line_number":157,"context_line":"    for ns in nameservers:"},{"line_number":158,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":159,"context_line":"            index \u003d nameservers.index(ns)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    if index \u003d\u003d -1:"},{"line_number":162,"context_line":"        raise exceptions.ServerNotFound"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_8185055b","line":159,"updated":"2014-12-17 14:31:38.000000000","message":"After we find the match, we should `break` to stop iterating the list any further.","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    nameservers \u003d pool.nameservers"},{"line_number":157,"context_line":"    for ns in nameservers:"},{"line_number":158,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":159,"context_line":"            index \u003d nameservers.index(ns)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    if index \u003d\u003d -1:"},{"line_number":162,"context_line":"        raise exceptions.ServerNotFound"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0b814b4d","line":159,"in_reply_to":"3a961159_8185055b","updated":"2014-12-30 21:30:28.000000000","message":"Done","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    pool.nameservers.append(nameserver)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    # Update the pool"},{"line_number":83,"context_line":"    updated_pool \u003d central_api.update_pool(context, pool)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # Go through the pool.nameservers to find the right one to get the ID"},{"line_number":86,"context_line":"    for ns in updated_pool.nameservers:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_393a88cd","line":83,"updated":"2015-01-05 23:56:27.000000000","message":"On creating a duplicate server we get a duplicate_pool_attribute error. Should this be transformed to a duplicate_server error here?","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    pool.nameservers.append(nameserver)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    # Update the pool"},{"line_number":83,"context_line":"    updated_pool \u003d central_api.update_pool(context, pool)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # Go through the pool.nameservers to find the right one to get the ID"},{"line_number":86,"context_line":"    for ns in updated_pool.nameservers:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_a30ab01d","line":83,"in_reply_to":"3a961159_393a88cd","updated":"2015-01-06 15:51:08.000000000","message":"Done","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    nameservers \u003d pool.nameservers"},{"line_number":200,"context_line":"    for ns in nameservers:"},{"line_number":201,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":202,"context_line":"            index \u003d nameservers.index(ns)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    if index \u003d\u003d -1:"},{"line_number":205,"context_line":"        raise exceptions.ServerNotFound"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_a62d7791","line":202,"updated":"2015-01-05 23:56:27.000000000","message":"Could you break out of the loop here once you find the nameserver? Also this code could potentially be a function that create_server and delete_server could call.","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    nameservers \u003d pool.nameservers"},{"line_number":200,"context_line":"    for ns in nameservers:"},{"line_number":201,"context_line":"        if ns.id \u003d\u003d server_id:"},{"line_number":202,"context_line":"            index \u003d nameservers.index(ns)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    if index \u003d\u003d -1:"},{"line_number":205,"context_line":"        raise exceptions.ServerNotFound"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_2316c049","line":202,"in_reply_to":"3a961159_a62d7791","updated":"2015-01-06 15:51:08.000000000","message":"Added the break. Doesn\u0027t seem worth it to make it a separate function.","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"e8fd75d063afd274aa9ab979cb84aa3d78573570","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \u0027key\u0027: \u0027name_server\u0027,"},{"line_number":72,"context_line":"        \u0027value\u0027: values[\u0027name\u0027]"},{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":"    nameserver \u003d objects.NameServer(**pa_values)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    # Get the default pool"},{"line_number":77,"context_line":"    pool \u003d central_api.get_pool(context, default_pool_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_35df720e","line":74,"updated":"2015-01-09 15:39:32.000000000","message":"Should this be NameServer vs Server?","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"505f792f7594c388746105125e5fca1d408a7d6d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \u0027key\u0027: \u0027name_server\u0027,"},{"line_number":72,"context_line":"        \u0027value\u0027: values[\u0027name\u0027]"},{"line_number":73,"context_line":"    }"},{"line_number":74,"context_line":"    nameserver \u003d objects.NameServer(**pa_values)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    # Get the default pool"},{"line_number":77,"context_line":"    pool \u003d central_api.get_pool(context, default_pool_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_c0610ed6","line":74,"in_reply_to":"3a961159_35df720e","updated":"2015-01-09 15:48:42.000000000","message":"Not sure what you mean. It is NameServer. Are you saying it should be Server? That\u0027s what we\u0027re getting rid of.","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"e8fd75d063afd274aa9ab979cb84aa3d78573570","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    pool \u003d central_api.get_pool(context, default_pool_id)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # Create an empty PoolAttribute object"},{"line_number":133,"context_line":"    nameserver \u003d objects.NameServer()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    # Get the desired nameserver from the pool"},{"line_number":136,"context_line":"    for ns in pool.nameservers:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_75e9fab6","line":133,"updated":"2015-01-09 15:39:32.000000000","message":"Same ^","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"505f792f7594c388746105125e5fca1d408a7d6d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    pool \u003d central_api.get_pool(context, default_pool_id)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    # Create an empty PoolAttribute object"},{"line_number":133,"context_line":"    nameserver \u003d objects.NameServer()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    # Get the desired nameserver from the pool"},{"line_number":136,"context_line":"    for ns in pool.nameservers:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_e05e0a13","line":133,"in_reply_to":"3a961159_75e9fab6","updated":"2015-01-09 15:48:42.000000000","message":"Same question","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"}],"designate/backend/impl_powerdns/__init__.py":[{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"1f274b30f7c41c6b3b92435cf2dd6c4f86002502","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                \u0027name\u0027: domain[\u0027name\u0027].rstrip(\u0027.\u0027),"},{"line_number":121,"context_line":"                \u0027master\u0027: \u0027,\u0027.join(CONF[\u0027backend:powerdns\u0027].masters),"},{"line_number":122,"context_line":"                \u0027type\u0027: \u0027SLAVE\u0027,"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"                \u0027account\u0027: context.tenant"},{"line_number":125,"context_line":"            }"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_d703b90a","line":123,"updated":"2015-01-08 11:01:44.000000000","message":"nit, whitespace?","commit_id":"b79b72213d22c1127d1884a13df77957e17653aa"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"9ab3d1a96f21d492d31920a5e525c57950bce924","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                \u0027name\u0027: domain[\u0027name\u0027].rstrip(\u0027.\u0027),"},{"line_number":121,"context_line":"                \u0027master\u0027: \u0027,\u0027.join(CONF[\u0027backend:powerdns\u0027].masters),"},{"line_number":122,"context_line":"                \u0027type\u0027: \u0027SLAVE\u0027,"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"                \u0027account\u0027: context.tenant"},{"line_number":125,"context_line":"            }"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_8189ec27","line":123,"in_reply_to":"3a961159_d703b90a","updated":"2015-01-08 14:32:30.000000000","message":"Done","commit_id":"b79b72213d22c1127d1884a13df77957e17653aa"}],"designate/central/service.py":[{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"32f73eebb35fbff304d7f1819d0f8c61943bc98a","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def _update_soa(self, context, zone):"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        nameservers \u003d self.get_domain_servers(context, zone[\u0027id\u0027])"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        soa \u003d self.find_recordset(context,"},{"line_number":493,"context_line":"                                  criterion\u003d{\u0027domain_id\u0027: zone[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_2a67c126","line":490,"updated":"2014-12-09 20:36:37.000000000","message":"Is there a reason why this can\u0027t use self.find_pool_attributes as above vs get_domain_servers() ?","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"ebc4cb54db0552e2a77714e820a9856a5f07bb18","unresolved":false,"context_lines":[{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def _update_soa(self, context, zone):"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        nameservers \u003d self.get_domain_servers(context, zone[\u0027id\u0027])"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        soa \u003d self.find_recordset(context,"},{"line_number":493,"context_line":"                                  criterion\u003d{\u0027domain_id\u0027: zone[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_5acd9f5c","line":490,"in_reply_to":"3a961159_2a67c126","updated":"2014-12-10 16:07:47.000000000","message":"This function already called get_domain_servers and I didn\u0027t change it. I only changed how get_domain_servers() worked, which I had to do for v1 anyway. Actually, I was thinking about changing the self.find_pool_attributes above to use get_domain_servers() because it\u0027s cleaner. What do you think?","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"32f73eebb35fbff304d7f1819d0f8c61943bc98a","unresolved":false,"context_lines":[{"line_number":638,"context_line":""},{"line_number":639,"context_line":"        self.quota.reset_quotas(context, tenant_id)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    # # Server Methods"},{"line_number":642,"context_line":"    # @notification(\u0027dns.server.create\u0027)"},{"line_number":643,"context_line":"    # @transaction"},{"line_number":644,"context_line":"    # def create_server(self, context, server):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_252a927e","line":641,"updated":"2014-12-09 20:36:37.000000000","message":"Couldn\u0027t this be removed in the same change though?","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"ebc4cb54db0552e2a77714e820a9856a5f07bb18","unresolved":false,"context_lines":[{"line_number":638,"context_line":""},{"line_number":639,"context_line":"        self.quota.reset_quotas(context, tenant_id)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    # # Server Methods"},{"line_number":642,"context_line":"    # @notification(\u0027dns.server.create\u0027)"},{"line_number":643,"context_line":"    # @transaction"},{"line_number":644,"context_line":"    # def create_server(self, context, server):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_7adc1b13","line":641,"in_reply_to":"3a961159_252a927e","updated":"2014-12-10 16:07:47.000000000","message":"Done","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":457,"context_line":""},{"line_number":458,"context_line":"    def _create_soa(self, context, zone):"},{"line_number":459,"context_line":"        # Need the default_pool_id to get the nameservers"},{"line_number":460,"context_line":"        default_pool_id \u003d cfg.CONF[\u0027service:central\u0027].default_pool_id"},{"line_number":461,"context_line":"        elevated_context \u003d context.elevated()"},{"line_number":462,"context_line":"        elevated_context.all_tenants \u003d True"},{"line_number":463,"context_line":"        action, status \u003d self._get_action_and_status(\u0027CREATE\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_b02a177c","line":460,"updated":"2014-12-10 21:53:01.000000000","message":"The pool id should be got from zone.pool_id, which should be populated at the point when _create_soa is called.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                                                criterion\u003d{"},{"line_number":468,"context_line":"                                                    \u0027pool_id\u0027: default_pool_id,"},{"line_number":469,"context_line":"                                                    \u0027key\u0027: \u0027name_server\u0027"},{"line_number":470,"context_line":"                                                })"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        soa_values \u003d [self._build_soa_record(zone, nameservers)]"},{"line_number":473,"context_line":"        recordlist \u003d objects.RecordList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_fc155949","line":470,"updated":"2014-12-10 21:53:01.000000000","message":"We can get the pool and the nameservers from the pool instead of calling find_pool_attributes. For later - we could look at caching the nameservers if necessary as a performance improvement.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":821,"context_line":"        elevated_context.all_tenants \u003d True"},{"line_number":822,"context_line":"        nameservers \u003d self.storage.find_pool_attributes("},{"line_number":823,"context_line":"            context\u003delevated_context,"},{"line_number":824,"context_line":"            criterion\u003d{\u0027pool_id\u0027: default_pool_id, \u0027key\u0027: \u0027name_server\u0027}"},{"line_number":825,"context_line":"        )"},{"line_number":826,"context_line":""},{"line_number":827,"context_line":"        if len(nameservers) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_1f6f772c","line":824,"updated":"2014-12-10 21:53:01.000000000","message":"We should fetch the name servers in the domain\u0027s pool and not the default pool id. Also we should probably be doing this check before subdomain / superdomain checks.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":897,"context_line":"        nameservers \u003d self.storage.find_pool_attributes("},{"line_number":898,"context_line":"            context\u003dcontext,"},{"line_number":899,"context_line":"            criterion\u003d{"},{"line_number":900,"context_line":"                \u0027pool_id\u0027: default_pool_id,"},{"line_number":901,"context_line":"                \u0027key\u0027: \u0027name_server\u0027"},{"line_number":902,"context_line":"            }"},{"line_number":903,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_1f56975c","line":900,"updated":"2014-12-10 21:53:01.000000000","message":"If we have the domain_id, we should be using the domain\u0027s pool and not the default_pool_id","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":1896,"context_line":"                with wrap_backend_call():"},{"line_number":1897,"context_line":"                    self.backend.create_server("},{"line_number":1898,"context_line":"                        context\u003dcontext,"},{"line_number":1899,"context_line":"                        server\u003dobjects.Server(name\u003dnameserver.value))"},{"line_number":1900,"context_line":""},{"line_number":1901,"context_line":"                # Update NS recorsets for all zones"},{"line_number":1902,"context_line":"                    elevated_context \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_bff58358","line":1899,"updated":"2014-12-10 21:53:01.000000000","message":"With the new pool manager backends, this may need to be changed/deleted.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":1963,"context_line":"            with wrap_backend_call():"},{"line_number":1964,"context_line":"                self.backend.create_server("},{"line_number":1965,"context_line":"                    context\u003dcontext,"},{"line_number":1966,"context_line":"                    server\u003dobjects.Server(name\u003dns)"},{"line_number":1967,"context_line":"                )"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"            # Create new NS recordsets for every zone"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_ff70ebdd","line":1966,"updated":"2014-12-10 21:53:01.000000000","message":"With the new pool manager backends, this may need to be changed/deleted.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":1978,"context_line":"            with wrap_backend_call():"},{"line_number":1979,"context_line":"                self.backend.delete_server("},{"line_number":1980,"context_line":"                    context\u003dcontext,"},{"line_number":1981,"context_line":"                    server\u003dobjects.Server(name\u003dns)"},{"line_number":1982,"context_line":"                )"},{"line_number":1983,"context_line":""},{"line_number":1984,"context_line":"            # Delete the NS recordsets for every zone"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_1f7937c8","line":1981,"updated":"2014-12-10 21:53:01.000000000","message":"With the new pool manager backends, this may need to be changed/deleted.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":1990,"context_line":""},{"line_number":1991,"context_line":"    @notification(\u0027dns.pool.delete\u0027)"},{"line_number":1992,"context_line":"    @transaction"},{"line_number":1993,"context_line":"    def delete_pool(self, context, pool_id):"},{"line_number":1994,"context_line":""},{"line_number":1995,"context_line":"        policy.check(\u0027delete_pool\u0027, context)"},{"line_number":1996,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_bf510338","line":1993,"updated":"2014-12-10 21:53:01.000000000","message":"Can you delete a pool with zones in it? If so to which pool would the zones move to?","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"dde1ffbfe8a0a1fb93d66044100906f5a2a082f1","unresolved":false,"context_lines":[{"line_number":2009,"context_line":"                with wrap_backend_call():"},{"line_number":2010,"context_line":"                    self.backend.delete_server("},{"line_number":2011,"context_line":"                        context\u003dcontext,"},{"line_number":2012,"context_line":"                        server\u003dobjects.Server(name\u003dns.value)"},{"line_number":2013,"context_line":"                    )"},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":"                # Delete the NS recordsets for every zone"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_3f76f3d7","line":2012,"updated":"2014-12-10 21:53:01.000000000","message":"With the new pool manager backends, this may need to be changed/deleted.","commit_id":"46ab546838886129ca4ed611f3af993cb0e48f6c"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        return domain"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def get_domain_servers(self, context, domain_id\u003dNone, criterion\u003dNone):"},{"line_number":823,"context_line":"        default_pool_id \u003d cfg.CONF[\u0027service:central\u0027].default_pool_id"},{"line_number":824,"context_line":"        # domain \u003d self.storage.get_domain(context, domain_id)"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"        if domain_id is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_c10f0d87","line":823,"updated":"2014-12-17 14:31:38.000000000","message":"I believe we should be using domain.pool_id here, rather than the default pool id","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":820,"context_line":"        return domain"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def get_domain_servers(self, context, domain_id\u003dNone, criterion\u003dNone):"},{"line_number":823,"context_line":"        default_pool_id \u003d cfg.CONF[\u0027service:central\u0027].default_pool_id"},{"line_number":824,"context_line":"        # domain \u003d self.storage.get_domain(context, domain_id)"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"        if domain_id is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0be86b15","line":823,"in_reply_to":"3a961159_c10f0d87","updated":"2014-12-30 21:30:28.000000000","message":"Done","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"        # If a nameserver is created along with the pool, then additional"},{"line_number":1880,"context_line":"        # steps need to be done"},{"line_number":1881,"context_line":"        if pool.obj_attr_is_set(\u0027nameserver\u0027):"},{"line_number":1882,"context_line":"            for nameserver in pool.nameservers:"},{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":"                # Update NS recorsets for all zones"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_817c25ed","line":1881,"updated":"2014-12-17 14:31:38.000000000","message":"Shouldn\u0027t this be nameservers (plural)? Also - I think this whole block can go, a new pool won\u0027t have any domains on it that need to be updated.","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"        # If a nameserver is created along with the pool, then additional"},{"line_number":1880,"context_line":"        # steps need to be done"},{"line_number":1881,"context_line":"        if pool.obj_attr_is_set(\u0027nameserver\u0027):"},{"line_number":1882,"context_line":"            for nameserver in pool.nameservers:"},{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":"                # Update NS recorsets for all zones"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_abbf57fb","line":1881,"in_reply_to":"3a961159_817c25ed","updated":"2014-12-30 21:30:28.000000000","message":"delete that section","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":1944,"context_line":"        for ns in create_ns:"},{"line_number":1945,"context_line":""},{"line_number":1946,"context_line":"            # Create new NS recordsets for every zone"},{"line_number":1947,"context_line":"            zones \u003d self.find_domains(elevated_context)"},{"line_number":1948,"context_line":"            for z in zones:"},{"line_number":1949,"context_line":"                self._add_ns(elevated_context, z,"},{"line_number":1950,"context_line":"                             objects.PoolAttribute(value\u003dns))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_81f1856c","line":1947,"updated":"2014-12-17 14:31:38.000000000","message":"We should only be updating the domains on the pool being updated, e.g. provide a criterion of {\u0027pool_id\u0027: pool.id}","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":1944,"context_line":"        for ns in create_ns:"},{"line_number":1945,"context_line":""},{"line_number":1946,"context_line":"            # Create new NS recordsets for every zone"},{"line_number":1947,"context_line":"            zones \u003d self.find_domains(elevated_context)"},{"line_number":1948,"context_line":"            for z in zones:"},{"line_number":1949,"context_line":"                self._add_ns(elevated_context, z,"},{"line_number":1950,"context_line":"                             objects.PoolAttribute(value\u003dns))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_4b57d3ca","line":1947,"in_reply_to":"3a961159_81f1856c","updated":"2014-12-30 21:30:28.000000000","message":"Done","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"c6f619b1969d863a8ce33d8f2c0ce4ca75ba8379","unresolved":false,"context_lines":[{"line_number":1969,"context_line":"        pool \u003d self.storage.delete_pool(context, pool_id)"},{"line_number":1970,"context_line":""},{"line_number":1971,"context_line":"        # If there are any nameservers, then additional steps need to be done"},{"line_number":1972,"context_line":"        if pool.obj_attr_is_set(\u0027nameserver\u0027):"},{"line_number":1973,"context_line":"            # Get all the nameservers from the pool"},{"line_number":1974,"context_line":"            nameservers \u003d self.find_pool_attributes("},{"line_number":1975,"context_line":"                context\u003dcontext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_0172f5e2","line":1972,"updated":"2014-12-17 14:31:38.000000000","message":"When a pool is deleted, I believe it either needs to be empty (no zones in the pool), or we need to delete all the zones contained within the pool (This second option feels a tad scary!)","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"7548296fafb2151120cfd85e28c5d63c09ce1e3a","unresolved":false,"context_lines":[{"line_number":1969,"context_line":"        pool \u003d self.storage.delete_pool(context, pool_id)"},{"line_number":1970,"context_line":""},{"line_number":1971,"context_line":"        # If there are any nameservers, then additional steps need to be done"},{"line_number":1972,"context_line":"        if pool.obj_attr_is_set(\u0027nameserver\u0027):"},{"line_number":1973,"context_line":"            # Get all the nameservers from the pool"},{"line_number":1974,"context_line":"            nameservers \u003d self.find_pool_attributes("},{"line_number":1975,"context_line":"                context\u003dcontext,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_8be53b0c","line":1972,"in_reply_to":"3a961159_0172f5e2","updated":"2014-12-30 21:30:28.000000000","message":"I am now throwing an exception if there are existing zones because I agree it\u0027s too scary to just delete all the zones.","commit_id":"4bb50c84d94a68b36039ee52e9609e81a26402b5"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":832,"context_line":"            policy.check(\u0027get_domain_servers\u0027, context, target)"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        # TODO(kiall): Once we allow domains to be allocated on 1 of N server"},{"line_number":835,"context_line":"        #              pools, return the filtered list here."},{"line_number":836,"context_line":"        nameservers \u003d self.storage.find_pool_attributes("},{"line_number":837,"context_line":"            context\u003dcontext,"},{"line_number":838,"context_line":"            criterion\u003d{"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_d9e264d4","line":835,"updated":"2015-01-05 23:56:27.000000000","message":"I think the TODO can now be deleted.","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":832,"context_line":"            policy.check(\u0027get_domain_servers\u0027, context, target)"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        # TODO(kiall): Once we allow domains to be allocated on 1 of N server"},{"line_number":835,"context_line":"        #              pools, return the filtered list here."},{"line_number":836,"context_line":"        nameservers \u003d self.storage.find_pool_attributes("},{"line_number":837,"context_line":"            context\u003dcontext,"},{"line_number":838,"context_line":"            criterion\u003d{"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_a358f031","line":835,"in_reply_to":"3a961159_d9e264d4","updated":"2015-01-06 15:51:08.000000000","message":"Done","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":741,"name":"Kiall Mac Innes","email":"kiall@macinnes.ie","username":"kiall"},"change_message_id":"4040d79516287342fa8655c3f5d606746e106536","unresolved":false,"context_lines":[{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        return domain"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    def get_domain_servers(self, context, domain_id\u003dNone, criterion\u003dNone):"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        if domain_id is None:"},{"line_number":821,"context_line":"            policy.check(\u0027get_domain_servers\u0027, context)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_cf5c7af3","line":818,"updated":"2015-01-13 22:06:12.000000000","message":"It looks like domain_id\u003dNone is only used by the IPA backend, and the code that\u0027s using it seems broke now, I\u0027ll file a bug for cleaning this up post-merge.\n\nIt looks like IPA will always use the default pool servers, regardless of if the zone is actually on the default pool.\n\nhttps://bugs.launchpad.net/designate/+bug/1410551","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"}],"designate/storage/base.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        :param context: RPC Context."},{"line_number":673,"context_line":"        :param pool_attribute_id: The ID of the PoolAttribute to be deleted"},{"line_number":674,"context_line":"        \"\"\""},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"    def ping(self, context):"},{"line_number":677,"context_line":"        \"\"\"Ping the Storage connection\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_39544853","line":674,"updated":"2015-01-05 23:56:27.000000000","message":"Are the above abstract methods needed?","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        :param context: RPC Context."},{"line_number":673,"context_line":"        :param pool_attribute_id: The ID of the PoolAttribute to be deleted"},{"line_number":674,"context_line":"        \"\"\""},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"    def ping(self, context):"},{"line_number":677,"context_line":"        \"\"\"Ping the Storage connection\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_e364b8e6","line":674,"in_reply_to":"3a961159_39544853","updated":"2015-01-06 15:51:08.000000000","message":"Why would they not be needed for these functions but needed for all the others?","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"}],"designate/storage/impl_sqlalchemy/migrate_repo/versions/049_migrate_servers.py":[{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"813e25e562f2fa13b787de20098f5bf327352ecb","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    for server in servers:"},{"line_number":49,"context_line":"        pool_attrib_table.insert().execute("},{"line_number":50,"context_line":"            id\u003dutils.generate_uuid().replace(\u0027-\u0027, \u0027\u0027),"},{"line_number":51,"context_line":"            created_at\u003dserver.created_at,"},{"line_number":52,"context_line":"            updated_at\u003dserver.updated_at,"},{"line_number":53,"context_line":"            version\u003dserver.version,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_a52bb4e9","line":50,"updated":"2015-01-05 20:23:06.000000000","message":"Should the table retain the original server id and copy it to the pool_attributes tables instead of generating a new id?","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    for server in servers:"},{"line_number":49,"context_line":"        pool_attrib_table.insert().execute("},{"line_number":50,"context_line":"            id\u003dutils.generate_uuid().replace(\u0027-\u0027, \u0027\u0027),"},{"line_number":51,"context_line":"            created_at\u003dserver.created_at,"},{"line_number":52,"context_line":"            updated_at\u003dserver.updated_at,"},{"line_number":53,"context_line":"            version\u003dserver.version,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_c3e6dc15","line":50,"in_reply_to":"3a961159_99f53c53","updated":"2015-01-06 15:51:08.000000000","message":"I changed it. I wasn\u0027t sure if it was used anywhere else, or even if it was preserved, since it\u0027s in a different table, is it that useful?","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    for server in servers:"},{"line_number":49,"context_line":"        pool_attrib_table.insert().execute("},{"line_number":50,"context_line":"            id\u003dutils.generate_uuid().replace(\u0027-\u0027, \u0027\u0027),"},{"line_number":51,"context_line":"            created_at\u003dserver.created_at,"},{"line_number":52,"context_line":"            updated_at\u003dserver.updated_at,"},{"line_number":53,"context_line":"            version\u003dserver.version,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_99f53c53","line":50,"in_reply_to":"3a961159_a52bb4e9","updated":"2015-01-05 23:56:27.000000000","message":"I think retaining the same id is more useful for the user.","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            key\u003d\u0027name_server\u0027,"},{"line_number":55,"context_line":"            value\u003dserver.name,"},{"line_number":56,"context_line":"            pool_id\u003ddefault_pool_id"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_d91d0475","line":57,"updated":"2015-01-05 23:56:27.000000000","message":"Deleting the servers table here itself, means that there is just one upgrade and downgrade instead of 2 for this to happen.","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            key\u003d\u0027name_server\u0027,"},{"line_number":55,"context_line":"            value\u003dserver.name,"},{"line_number":56,"context_line":"            pool_id\u003ddefault_pool_id"},{"line_number":57,"context_line":"        )"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def downgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_03baa40a","line":57,"in_reply_to":"3a961159_d91d0475","updated":"2015-01-06 15:51:08.000000000","message":"If we do that, then we cannot deploy to production without down time. Once you make the change to the database, then all the nodes with the code are broken because the server table is not there. \n\nIt probably isn\u0027t that important on this particular migration, but we need to get into the habit of making all of our migrations where they can be done without any potential down time. That\u0027s why the delete server goes into a separate migration.","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    for p in pool_attributes:"},{"line_number":73,"context_line":"        pool_attrib_table.delete().\\"},{"line_number":74,"context_line":"            where(p.pool_id \u003d\u003d default_pool_id).\\"},{"line_number":75,"context_line":"            where(p.key \u003d\u003d \u0027name_server\u0027).execute()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_1c221aa3","line":75,"updated":"2015-01-05 23:56:27.000000000","message":"How would you distinguish between what is created/added by v2 versus migrated? I think it would be easier to just create the servers table on a downgrade and populate it with all the current values in the pool_attrib_table and also retain them in the pool_attrib_table","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    for p in pool_attributes:"},{"line_number":73,"context_line":"        pool_attrib_table.delete().\\"},{"line_number":74,"context_line":"            where(p.pool_id \u003d\u003d default_pool_id).\\"},{"line_number":75,"context_line":"            where(p.key \u003d\u003d \u0027name_server\u0027).execute()"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_435e6cea","line":75,"in_reply_to":"3a961159_1c221aa3","updated":"2015-01-06 15:51:08.000000000","message":"During the migration, nothing is deleted from the server table, since that is deleted during a separate migration. So, it simply deletes all nameservers from the pool_attributes table.","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"1f7cc1f19d40ea30e46f6a7779b801b2125dff7c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    for p in pool_attributes:"},{"line_number":71,"context_line":"        pool_attrib_table.delete().\\"},{"line_number":72,"context_line":"            where(p.pool_id \u003d\u003d default_pool_id).\\"},{"line_number":73,"context_line":"            where(p.key \u003d\u003d \u0027name_server\u0027).execute()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_8a1d7964","line":73,"updated":"2015-01-08 21:10:43.000000000","message":"I think here we should read in the servers table and delete only those entries that are present in the servers table. Otherwise we could delete entries in the pool_attrib_table that were created before or after the upgrade. If we add a nameserver after the upgrade, we could have domains with that NS record but the nameserver entry itself is not present. Alternatively we can disallow downgrade.\n\nKiall/Mugsie: Thoughts/comments on this?","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"fb776b7cbd2b79fd66a61cc9f56910907942de62","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    for p in pool_attributes:"},{"line_number":71,"context_line":"        pool_attrib_table.delete().\\"},{"line_number":72,"context_line":"            where(p.pool_id \u003d\u003d default_pool_id).\\"},{"line_number":73,"context_line":"            where(p.key \u003d\u003d \u0027name_server\u0027).execute()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_a0e32205","line":73,"in_reply_to":"3a961159_0045d642","updated":"2015-01-09 15:57:03.000000000","message":"good point. OK - thats fine by me then","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"505f792f7594c388746105125e5fca1d408a7d6d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    for p in pool_attributes:"},{"line_number":71,"context_line":"        pool_attrib_table.delete().\\"},{"line_number":72,"context_line":"            where(p.pool_id \u003d\u003d default_pool_id).\\"},{"line_number":73,"context_line":"            where(p.key \u003d\u003d \u0027name_server\u0027).execute()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_0045d642","line":73,"in_reply_to":"3a961159_155d167d","updated":"2015-01-09 15:48:42.000000000","message":"Deleting the server table now makes the migration not backwards compatible -- in other words, if we do it all at once, then when you deploy it, all nodes that don\u0027t have the new code will break. Not that a big a deal in this particular instance, so I can do it. I just think it\u0027s a bad practice in general and something we should all try to avoid in the future.","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"e8fd75d063afd274aa9ab979cb84aa3d78573570","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    for p in pool_attributes:"},{"line_number":71,"context_line":"        pool_attrib_table.delete().\\"},{"line_number":72,"context_line":"            where(p.pool_id \u003d\u003d default_pool_id).\\"},{"line_number":73,"context_line":"            where(p.key \u003d\u003d \u0027name_server\u0027).execute()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_155d167d","line":73,"in_reply_to":"3a961159_4ad1d155","updated":"2015-01-09 15:39:32.000000000","message":"I think the Servers table shouid be deleted if possible, so doing what Vinod wants may not be possible. Is there any reason to keep the Servers table?","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"053a1587a7c3c0a1eb9ef62a3eb4f27727e51440","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    for p in pool_attributes:"},{"line_number":71,"context_line":"        pool_attrib_table.delete().\\"},{"line_number":72,"context_line":"            where(p.pool_id \u003d\u003d default_pool_id).\\"},{"line_number":73,"context_line":"            where(p.key \u003d\u003d \u0027name_server\u0027).execute()"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_4ad1d155","line":73,"in_reply_to":"3a961159_8a1d7964","updated":"2015-01-08 21:17:05.000000000","message":"And I think that the downgrade should take the database back to the state that it was in prior to the upgrade.","commit_id":"3ab3853c2fd5715a4e2fc4ea61c4bd1d5351450a"}],"designate/tests/__init__.py":[{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"32f73eebb35fbff304d7f1819d0f8c61943bc98a","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        _values.update(values)"},{"line_number":519,"context_line":"        return _values"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def get_pool_attribute_nameserver_fixtures(self, fixture\u003d0, values\u003dNone):"},{"line_number":522,"context_line":"        values \u003d values or {}"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        _values \u003d copy.copy(self.pool_attribute_nameserver_fixtures[fixture])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_e5a5ea47","line":521,"updated":"2014-12-09 20:36:37.000000000","message":"Could we add something to the get_pool_attributes() for this instead of a dedicated method?","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"ebc4cb54db0552e2a77714e820a9856a5f07bb18","unresolved":false,"context_lines":[{"line_number":518,"context_line":"        _values.update(values)"},{"line_number":519,"context_line":"        return _values"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def get_pool_attribute_nameserver_fixtures(self, fixture\u003d0, values\u003dNone):"},{"line_number":522,"context_line":"        values \u003d values or {}"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        _values \u003d copy.copy(self.pool_attribute_nameserver_fixtures[fixture])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_9a738714","line":521,"in_reply_to":"3a961159_e5a5ea47","updated":"2014-12-10 16:07:47.000000000","message":"Not really. They provide support for two different tests. One provides for the pool tests. The way these are written, there are different calls for the pools themselves, the nameservers and the other_pool attributes. This one provides support to test the storage pool_attribute tests so it needs pool_id, key and value.","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"}],"designate/tests/test_api/test_v1/test_servers.py":[{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"32f73eebb35fbff304d7f1819d0f8c61943bc98a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.assertEqual(0, len(response.json[\u0027servers\u0027]))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # # Create a server"},{"line_number":80,"context_line":"        # self.create_server()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        # Create the nameserver"},{"line_number":83,"context_line":"        self.create_nameserver()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_653f3ad7","line":80,"updated":"2014-12-09 20:36:37.000000000","message":"Can this be removed?","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"ebc4cb54db0552e2a77714e820a9856a5f07bb18","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.assertEqual(0, len(response.json[\u0027servers\u0027]))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        # # Create a server"},{"line_number":80,"context_line":"        # self.create_server()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        # Create the nameserver"},{"line_number":83,"context_line":"        self.create_nameserver()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_1aedd78b","line":80,"in_reply_to":"3a961159_653f3ad7","updated":"2014-12-10 16:07:47.000000000","message":"Done","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"}],"designate/tests/test_central/test_service.py":[{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"32f73eebb35fbff304d7f1819d0f8c61943bc98a","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                    self.central_service._is_valid_ttl("},{"line_number":187,"context_line":"                        context, values[\u0027ttl\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    # # Server Tests"},{"line_number":190,"context_line":"    # def test_create_server(self):"},{"line_number":191,"context_line":"    #     values \u003d dict("},{"line_number":192,"context_line":"    #         name\u003d\u0027ns1.example.org.\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_c5062e20","line":189,"updated":"2014-12-09 20:36:37.000000000","message":"Can this be removed?","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"ebc4cb54db0552e2a77714e820a9856a5f07bb18","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                    self.central_service._is_valid_ttl("},{"line_number":187,"context_line":"                        context, values[\u0027ttl\u0027])"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    # # Server Tests"},{"line_number":190,"context_line":"    # def test_create_server(self):"},{"line_number":191,"context_line":"    #     values \u003d dict("},{"line_number":192,"context_line":"    #         name\u003d\u0027ns1.example.org.\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_faa00b45","line":189,"in_reply_to":"3a961159_c5062e20","updated":"2014-12-10 16:07:47.000000000","message":"Done","commit_id":"570df43268779654c84cfb4cf6635f2b5f5c3c1a"}],"designate/tests/test_storage/__init__.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"97f03bb9f9e18da19fd582e864d3d6c9756dd2c3","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    # def test_delete_server_missing(self):"},{"line_number":395,"context_line":"    #     with testtools.ExpectedException(exceptions.ServerNotFound):"},{"line_number":396,"context_line":"    #         uuid \u003d \u0027caf771fc-6b05-4891-bee1-c2a48621f57b\u0027"},{"line_number":397,"context_line":"    #         self.storage.delete_server(self.admin_context, uuid)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    # TSIG Key Tests"},{"line_number":400,"context_line":"    def test_create_tsigkey(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_7c5ebe14","line":397,"updated":"2015-01-05 23:56:27.000000000","message":"Could you remove all of this code?","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"},{"author":{"_account_id":8130,"name":"Betsy Luzader","email":"betsy.luzader@rackspace.com","username":"bluzader"},"change_message_id":"8370453e3c0c2335e06dccb49ac82dc841f9febb","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    # def test_delete_server_missing(self):"},{"line_number":395,"context_line":"    #     with testtools.ExpectedException(exceptions.ServerNotFound):"},{"line_number":396,"context_line":"    #         uuid \u003d \u0027caf771fc-6b05-4891-bee1-c2a48621f57b\u0027"},{"line_number":397,"context_line":"    #         self.storage.delete_server(self.admin_context, uuid)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    # TSIG Key Tests"},{"line_number":400,"context_line":"    def test_create_tsigkey(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_43882c22","line":397,"in_reply_to":"3a961159_7c5ebe14","updated":"2015-01-06 15:51:08.000000000","message":"Done","commit_id":"8d1b17c1df490fbfa7a875659f3633ce7988916e"}]}
