)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Signed-off-by: Andy Edmonds \u003candy@edmonds.be\u003e"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements the bexar-open-cloud-compute-interface blueprint. Usage details at"},{"line_number":10,"context_line":"http://wiki.openstack.org/occi and specifications at http://www.occi-wg.org."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I402cdee80b42c8b12f4c6e954187fa544f959b4f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAFX%2F%2F%2Bx8%3D","line":9,"updated":"2012-04-10 16:36:31.000000000","message":"Minor nit: If you used \"blueprint bexar-open-cloud-compute-interface\", gerrit will generate an appropriate link.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Signed-off-by: Andy Edmonds \u003candy@edmonds.be\u003e"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements the bexar-open-cloud-compute-interface blueprint. Usage details at"},{"line_number":10,"context_line":"http://wiki.openstack.org/occi and specifications at http://www.occi-wg.org."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I402cdee80b42c8b12f4c6e954187fa544f959b4f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAFX%2F%2F9%2BU%3D","line":9,"in_reply_to":"AAAAFX%2F%2F%2Bx8%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"}],"bin/nova-api-occi":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from nova import service"},{"line_number":34,"context_line":"from nova import utils"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":37,"context_line":"    utils.default_flagfile()"},{"line_number":38,"context_line":"    flags.FLAGS(sys.argv)"},{"line_number":39,"context_line":"    logging.setup()"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAFX%2F%2F%2Bx4%3D","line":36,"updated":"2012-04-10 16:36:31.000000000","message":"I\u0027d like an extra blank line separating the imports from the \u0027if\u0027 clause; this might be necessary for PEP8, but I\u0027m not 100% certain of that.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from nova import service"},{"line_number":34,"context_line":"from nova import utils"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":37,"context_line":"    utils.default_flagfile()"},{"line_number":38,"context_line":"    flags.FLAGS(sys.argv)"},{"line_number":39,"context_line":"    logging.setup()"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAFX%2F%2F9%2BY%3D","line":36,"in_reply_to":"AAAAFX%2F%2F%2Bx4%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"}],"etc/nova/api-paste.ini":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7008fbadf18687b617ff8a5682ea0ec9a3c9cc48","unresolved":false,"context_lines":[{"line_number":145,"context_line":"# Request routing"},{"line_number":146,"context_line":"# use \u003d call:nova.api.occi.urlmap:urlmap_factory"},{"line_number":147,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":148,"context_line":"/: occiapi11"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"[pipeline:occiapi11]"},{"line_number":151,"context_line":"pipeline \u003d authtoken keystonecontext occiapiapp11"}],"source_content_type":"text/x-properties","patch_set":3,"id":"AAAAGX%2F%2F%2F1Q%3D","line":148,"updated":"2012-04-13 16:05:24.000000000","message":"Just being nit-picky here—why is this \"occiapi11\"?  Is this version 1.1 of OCCI API?","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"95df42160609975b7bb04458f653e186687845d3","unresolved":false,"context_lines":[{"line_number":145,"context_line":"# Request routing"},{"line_number":146,"context_line":"# use \u003d call:nova.api.occi.urlmap:urlmap_factory"},{"line_number":147,"context_line":"use \u003d egg:Paste#urlmap"},{"line_number":148,"context_line":"/: occiapi11"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"[pipeline:occiapi11]"},{"line_number":151,"context_line":"pipeline \u003d authtoken keystonecontext occiapiapp11"}],"source_content_type":"text/x-properties","patch_set":3,"id":"AAAAGn%2F%2F%2F%2Bo%3D","line":148,"in_reply_to":"AAAAGX%2F%2F%2F1Q%3D","updated":"2012-04-13 19:05:59.000000000","message":"Yes, correct :-)","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"}],"nova/api/occi/compute/computeresource.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from occi import core_model"},{"line_number":39,"context_line":"from occi import backend"},{"line_number":40,"context_line":"from occi.extensions import infrastructure"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"FLAGS \u003d flags.FLAGS"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bxs%3D","line":40,"updated":"2012-04-10 16:36:31.000000000","message":"These imports don\u0027t comply with HACKING.  The occi imports are in the wrong order (\"backend\" \u003c \"core_model\") and should be in with the third-party imports (i.e., before \"from webob import exc\"), and the \"nova.api.occi\" imports are also in the incorrect order (\"nova.api.occi.extensions.occi_future\" \u003c \"nova.api.occi.extensions.openstack\") and need to be in with the other nova imports.  Finally, your nova imports are all in the wrong order.\n\nFor ordering imports, treat \"from nova import utils\" as \"import nova.utils\" and use human-alphabetical order (e.g., \"import base64\" followed by \"import ConfigParser\" followed by \"import datetime\").","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from occi import core_model"},{"line_number":39,"context_line":"from occi import backend"},{"line_number":40,"context_line":"from occi.extensions import infrastructure"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"FLAGS \u003d flags.FLAGS"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F9%2BQ%3D","line":40,"in_reply_to":"AAAAFX%2F%2F%2Bxs%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \u0027\u0027\u0027"},{"line_number":51,"context_line":"    A Backend for compute instances."},{"line_number":52,"context_line":"    \u0027\u0027\u0027"},{"line_number":53,"context_line":"    def __init__(self):"},{"line_number":54,"context_line":"        super(ComputeBackend, self).__init__()"},{"line_number":55,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":56,"context_line":"        self.network_api \u003d net_api.API()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bxo%3D","line":53,"updated":"2012-04-10 16:36:31.000000000","message":"According to HACKING, there should be a newline between the closing triple-quote and the \u0027def __init__(self):\u0027.  Also, I have a slight preference for double-quote over single-quote in triple-quote docstrings, but that\u0027s an incredibly minor femtonit.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \u0027\u0027\u0027"},{"line_number":51,"context_line":"    A Backend for compute instances."},{"line_number":52,"context_line":"    \u0027\u0027\u0027"},{"line_number":53,"context_line":"    def __init__(self):"},{"line_number":54,"context_line":"        super(ComputeBackend, self).__init__()"},{"line_number":55,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":56,"context_line":"        self.network_api \u003d net_api.API()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F9%2BM%3D","line":53,"in_reply_to":"AAAAFX%2F%2F%2Bxo%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _check_invalid_attrs(self, resource):"},{"line_number":59,"context_line":"        \u0027\u0027\u0027"},{"line_number":60,"context_line":"        if certain attributes are received then an exception is raised."},{"line_number":61,"context_line":"        \u0027\u0027\u0027"},{"line_number":62,"context_line":"        if (\u0027occi.compute.cores\u0027 in resource.attributes) or \\"},{"line_number":63,"context_line":"            (\u0027occi.compute.speed\u0027 in resource.attributes) or \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bxk%3D","line":60,"updated":"2012-04-10 16:36:31.000000000","message":"Doc strings should be proper English—i.e., proper spelling, capitalization, and sentence rules.  Single-line docstrings should be all in one line, i.e.:\n\n    \"\"\"If certain attributes are received, then an exception is raised.\"\"\"","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _check_invalid_attrs(self, resource):"},{"line_number":59,"context_line":"        \u0027\u0027\u0027"},{"line_number":60,"context_line":"        if certain attributes are received then an exception is raised."},{"line_number":61,"context_line":"        \u0027\u0027\u0027"},{"line_number":62,"context_line":"        if (\u0027occi.compute.cores\u0027 in resource.attributes) or \\"},{"line_number":63,"context_line":"            (\u0027occi.compute.speed\u0027 in resource.attributes) or \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F9%2BI%3D","line":60,"in_reply_to":"AAAAFX%2F%2F%2Bxk%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \u0027\u0027\u0027"},{"line_number":60,"context_line":"        if certain attributes are received then an exception is raised."},{"line_number":61,"context_line":"        \u0027\u0027\u0027"},{"line_number":62,"context_line":"        if (\u0027occi.compute.cores\u0027 in resource.attributes) or \\"},{"line_number":63,"context_line":"            (\u0027occi.compute.speed\u0027 in resource.attributes) or \\"},{"line_number":64,"context_line":"            (\u0027occi.compute.memory\u0027 in resource.attributes) or \\"},{"line_number":65,"context_line":"            (\u0027occi.compute.architecture\u0027 in resource.attributes):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bxg%3D","line":62,"updated":"2012-04-10 16:36:31.000000000","message":"I personally prefer that expressions such as this be enclosed in parentheses to avoid the use of backslashes.  This is a femtonit, however.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        \u0027\u0027\u0027"},{"line_number":60,"context_line":"        if certain attributes are received then an exception is raised."},{"line_number":61,"context_line":"        \u0027\u0027\u0027"},{"line_number":62,"context_line":"        if (\u0027occi.compute.cores\u0027 in resource.attributes) or \\"},{"line_number":63,"context_line":"            (\u0027occi.compute.speed\u0027 in resource.attributes) or \\"},{"line_number":64,"context_line":"            (\u0027occi.compute.memory\u0027 in resource.attributes) or \\"},{"line_number":65,"context_line":"            (\u0027occi.compute.architecture\u0027 in resource.attributes):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F9%2BE%3D","line":62,"in_reply_to":"AAAAFX%2F%2F%2Bxg%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                oc +\u003d 1"},{"line_number":117,"context_line":"            elif mixin \u003d\u003d os_extns.OS_KEY_PAIR_EXT:"},{"line_number":118,"context_line":"                key_name \u003d \\"},{"line_number":119,"context_line":"                resource.attributes[\u0027org.openstack.credentials.publickey.name\u0027]"},{"line_number":120,"context_line":"                key_data \u003d \\"},{"line_number":121,"context_line":"                resource.attributes[\u0027org.openstack.credentials.publickey.data\u0027]"},{"line_number":122,"context_line":"            elif mixin \u003d\u003d os_extns.OS_ADMIN_PWD_EXT:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bxc%3D","line":119,"updated":"2012-04-10 16:36:31.000000000","message":"Again, I prefer to avoid backslashes wherever possible, but I freely admit this may not be possible here.  However, the line following the backslash should be further indented to make clear that it is a continuation of the previous line, i.e.:\n\n    key_name \u003d \\\n        resource.attributes[\u0027org.openstack.credentials.publickey.name\u0027]","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                oc +\u003d 1"},{"line_number":117,"context_line":"            elif mixin \u003d\u003d os_extns.OS_KEY_PAIR_EXT:"},{"line_number":118,"context_line":"                key_name \u003d \\"},{"line_number":119,"context_line":"                resource.attributes[\u0027org.openstack.credentials.publickey.name\u0027]"},{"line_number":120,"context_line":"                key_data \u003d \\"},{"line_number":121,"context_line":"                resource.attributes[\u0027org.openstack.credentials.publickey.data\u0027]"},{"line_number":122,"context_line":"            elif mixin \u003d\u003d os_extns.OS_ADMIN_PWD_EXT:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F9%2BA%3D","line":119,"in_reply_to":"AAAAFX%2F%2F%2Bxc%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                inst_type \u003d instance_types.get_default_instance_type()"},{"line_number":161,"context_line":"                msg \u003d \u0027No resource template was found in the request. \\"},{"line_number":162,"context_line":"                                Using the default: \u0027 + inst_type[\u0027name\u0027]"},{"line_number":163,"context_line":"                LOG.warn(msg)"},{"line_number":164,"context_line":"            (instances, _) \u003d self.compute_api.create("},{"line_number":165,"context_line":"                                    context\u003dextras[\u0027nova_ctx\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BxM%3D","line":162,"updated":"2012-04-10 16:36:31.000000000","message":"* Backslashes are the wrong way to extend strings across multiple lines.\n* Strings fed to LOG, used as the message of an exception, etc. should be internationalized.\n* Because of the internationalization, we prefer using substitution to string concatenation.\n\nSuggested rewrite:\n\n    msg \u003d _(\u0027No resource template was found in the request.  \u0027\n            \u0027Using the default: %s\u0027) % inst_type[\u0027name\u0027]","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                inst_type \u003d instance_types.get_default_instance_type()"},{"line_number":161,"context_line":"                msg \u003d \u0027No resource template was found in the request. \\"},{"line_number":162,"context_line":"                                Using the default: \u0027 + inst_type[\u0027name\u0027]"},{"line_number":163,"context_line":"                LOG.warn(msg)"},{"line_number":164,"context_line":"            (instances, _) \u003d self.compute_api.create("},{"line_number":165,"context_line":"                                    context\u003dextras[\u0027nova_ctx\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F998%3D","line":162,"in_reply_to":"AAAAFX%2F%2F%2BxM%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        #set valid actions"},{"line_number":242,"context_line":"        resource.actions \u003d [infrastructure.STOP,"},{"line_number":243,"context_line":"                          infrastructure.SUSPEND, \\"},{"line_number":244,"context_line":"                          infrastructure.RESTART, \\"},{"line_number":245,"context_line":"                          os_extns.OS_REVERT_RESIZE, \\"},{"line_number":246,"context_line":"                          os_extns.OS_CONFIRM_RESIZE, \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BxI%3D","line":243,"updated":"2012-04-10 16:36:31.000000000","message":"Backslashes are unnecessary here; these options are enclosed in square brackets.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        #set valid actions"},{"line_number":242,"context_line":"        resource.actions \u003d [infrastructure.STOP,"},{"line_number":243,"context_line":"                          infrastructure.SUSPEND, \\"},{"line_number":244,"context_line":"                          infrastructure.RESTART, \\"},{"line_number":245,"context_line":"                          os_extns.OS_REVERT_RESIZE, \\"},{"line_number":246,"context_line":"                          os_extns.OS_CONFIRM_RESIZE, \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F994%3D","line":243,"in_reply_to":"AAAAFX%2F%2F%2BxI%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        # change password - OS"},{"line_number":498,"context_line":"        # confirm resized server"},{"line_number":499,"context_line":"        if instance[\u0027vm_state\u0027] in (vm_states.ACTIVE, \\"},{"line_number":500,"context_line":"                                    task_states.UPDATING_PASSWORD, \\"},{"line_number":501,"context_line":"                                    task_states.RESIZE_VERIFY):"},{"line_number":502,"context_line":"            entity.attributes[\u0027occi.compute.state\u0027] \u003d \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BxA%3D","line":499,"updated":"2012-04-10 16:36:31.000000000","message":"Again, backslashes here are unnecessary and should be removed.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        # change password - OS"},{"line_number":498,"context_line":"        # confirm resized server"},{"line_number":499,"context_line":"        if instance[\u0027vm_state\u0027] in (vm_states.ACTIVE, \\"},{"line_number":500,"context_line":"                                    task_states.UPDATING_PASSWORD, \\"},{"line_number":501,"context_line":"                                    task_states.RESIZE_VERIFY):"},{"line_number":502,"context_line":"            entity.attributes[\u0027occi.compute.state\u0027] \u003d \u0027active\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F990%3D","line":499,"in_reply_to":"AAAAFX%2F%2F%2BxA%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":560,"context_line":"        \u0027\u0027\u0027"},{"line_number":561,"context_line":"        Deletes the referenced VM."},{"line_number":562,"context_line":"        \u0027\u0027\u0027"},{"line_number":563,"context_line":"        LOG.info(\u0027Removing representation of virtual machine with id: \u0027"},{"line_number":564,"context_line":"              + entity.identifier)"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        context \u003d extras[\u0027nova_ctx\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bw8%3D","line":563,"updated":"2012-04-10 16:36:31.000000000","message":"This message needs to be internationalized.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":560,"context_line":"        \u0027\u0027\u0027"},{"line_number":561,"context_line":"        Deletes the referenced VM."},{"line_number":562,"context_line":"        \u0027\u0027\u0027"},{"line_number":563,"context_line":"        LOG.info(\u0027Removing representation of virtual machine with id: \u0027"},{"line_number":564,"context_line":"              + entity.identifier)"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        context \u003d extras[\u0027nova_ctx\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99w%3D","line":563,"in_reply_to":"AAAAFX%2F%2F%2Bw8%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        Updates basic attribute information, resizes the VM and rebuilds the"},{"line_number":582,"context_line":"        VM. Only one mixin update per execution."},{"line_number":583,"context_line":"        \u0027\u0027\u0027"},{"line_number":584,"context_line":"        LOG.info(\u0027Partial update requested for instance: \u0027 + \\"},{"line_number":585,"context_line":"                                            old.attributes[\u0027occi.core.id\u0027])"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        instance \u003d self.retrieve(old, extras)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bw4%3D","line":584,"updated":"2012-04-10 16:36:31.000000000","message":"Again, this message needs to be internationalized.  Also, the backslash is unnecessary here.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        Updates basic attribute information, resizes the VM and rebuilds the"},{"line_number":582,"context_line":"        VM. Only one mixin update per execution."},{"line_number":583,"context_line":"        \u0027\u0027\u0027"},{"line_number":584,"context_line":"        LOG.info(\u0027Partial update requested for instance: \u0027 + \\"},{"line_number":585,"context_line":"                                            old.attributes[\u0027occi.core.id\u0027])"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"        instance \u003d self.retrieve(old, extras)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99s%3D","line":584,"in_reply_to":"AAAAFX%2F%2F%2Bw4%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":601,"context_line":"            LOG.info(\u0027Updating security rule group\u0027)"},{"line_number":602,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":603,"context_line":"        else:"},{"line_number":604,"context_line":"            LOG.error(\u0027I\\\u0027ve no idea what this mixin is! \u0027 + \\"},{"line_number":605,"context_line":"                                                mixin.scheme + mixin.term)"},{"line_number":606,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":607,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bwg%3D","line":604,"updated":"2012-04-10 16:36:31.000000000","message":"Again, internationalize.  Also, use double quotes if your string uses single quotes, so you don\u0027t have to backslash-escape the single quote.  For example:\n\n    scheme \u003d mixin.scheme\n    term \u003d mixin.term\n    LOG.error(_(\"I\u0027ve no idea what this mixin is! %(scheme)s%(term)s\") % locals())","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":601,"context_line":"            LOG.info(\u0027Updating security rule group\u0027)"},{"line_number":602,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":603,"context_line":"        else:"},{"line_number":604,"context_line":"            LOG.error(\u0027I\\\u0027ve no idea what this mixin is! \u0027 + \\"},{"line_number":605,"context_line":"                                                mixin.scheme + mixin.term)"},{"line_number":606,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":607,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99o%3D","line":604,"in_reply_to":"AAAAFX%2F%2F%2Bwg%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        Updates basic attributes. Supports only title and summary changes."},{"line_number":611,"context_line":"        \u0027\u0027\u0027"},{"line_number":612,"context_line":"        LOG.info(\u0027Updating mutable attributes of instance\u0027)"},{"line_number":613,"context_line":"        if (\u0027occi.core.title\u0027 in new.attributes) \\"},{"line_number":614,"context_line":"                                    or (\u0027occi.core.title\u0027 in new.attributes):"},{"line_number":615,"context_line":"            if len(new.attributes[\u0027occi.core.title\u0027]) \u003e 0:"},{"line_number":616,"context_line":"                old.attributes[\u0027occi.core.title\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bwc%3D","line":613,"updated":"2012-04-10 16:36:31.000000000","message":"Backslash is unnecessary.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        Updates basic attributes. Supports only title and summary changes."},{"line_number":611,"context_line":"        \u0027\u0027\u0027"},{"line_number":612,"context_line":"        LOG.info(\u0027Updating mutable attributes of instance\u0027)"},{"line_number":613,"context_line":"        if (\u0027occi.core.title\u0027 in new.attributes) \\"},{"line_number":614,"context_line":"                                    or (\u0027occi.core.title\u0027 in new.attributes):"},{"line_number":615,"context_line":"            if len(new.attributes[\u0027occi.core.title\u0027]) \u003e 0:"},{"line_number":616,"context_line":"                old.attributes[\u0027occi.core.title\u0027] \u003d \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99k%3D","line":613,"in_reply_to":"AAAAFX%2F%2F%2Bwc%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                inst_type \u003d instance_types.get_default_instance_type()"},{"line_number":165,"context_line":"                msg \u003d _(\u0027No resource template was found in the request. \u0027)"},{"line_number":166,"context_line":"                msg +\u003d _(\u0027Using the default: %s\u0027) % inst_type[\u0027name\u0027]"},{"line_number":167,"context_line":"                LOG.warn(msg)"},{"line_number":168,"context_line":"            (instances, reservation_id) \u003d self.compute_api.create("},{"line_number":169,"context_line":"                                    context\u003dextras[\u0027nova_ctx\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFX%2F%2F97A%3D","line":166,"updated":"2012-04-11 22:14:13.000000000","message":"Please avoid text concatenation whenever possible.  It\u0027s unnecessary here, and it any case it completely messes up internationalization.  The thing to do is make use of the Python behavior of auto-concatenating adjacent strings:\n\n    msg \u003d _(\u0027No resource template was found in the request. \u0027\n            \u0027Using the default: %s\u0027) % inst_type[\u0027name\u0027]","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            else:"},{"line_number":164,"context_line":"                inst_type \u003d instance_types.get_default_instance_type()"},{"line_number":165,"context_line":"                msg \u003d _(\u0027No resource template was found in the request. \u0027)"},{"line_number":166,"context_line":"                msg +\u003d _(\u0027Using the default: %s\u0027) % inst_type[\u0027name\u0027]"},{"line_number":167,"context_line":"                LOG.warn(msg)"},{"line_number":168,"context_line":"            (instances, reservation_id) \u003d self.compute_api.create("},{"line_number":169,"context_line":"                                    context\u003dextras[\u0027nova_ctx\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAGX%2F%2F%2F48%3D","line":166,"in_reply_to":"AAAAFX%2F%2F97A%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        for m in old.mixins:"},{"line_number":687,"context_line":"            if m.term \u003d\u003d mixin.term and m.scheme \u003d\u003d mixin.scheme:"},{"line_number":688,"context_line":"                m \u003d mixin"},{"line_number":689,"context_line":"                msg \u003d _(\u0027OS template is changed: %s%s\u0027) % m.scheme, m.term"},{"line_number":690,"context_line":"                LOG.debug(msg)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def action(self, entity, action, extras):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFX%2F%2F96Y%3D","line":689,"updated":"2012-04-11 22:14:13.000000000","message":"This will not work.  I18n strings, unless they have a single argument, must use the dictionary-style access, i.e.:\n\n    scheme \u003d m.scheme\n    term \u003d m.term\n    msg \u003d _(\u0027OS template is changed: %(scheme)s%(term)s\u0027) % locals()\n\nSince what you\u0027re actually doing is building a non-internationalized string, you can use something like this:\n\n    tmpl \u003d \u0027%s%s\u0027 % (m.scheme, m.term)\n    msg \u003d _(\u0027OS template is changed: %s\u0027) % tmpl\n\nNote the use of a tuple on the first line; since there\u0027s more than one argument, you have to pass in a tuple.  (Remember that \"a % b, c\" is equivalent to \"(a % b), c\" due to operator precedence.)  Also note that, in the second line, a bare \u0027%s\" is legal since there\u0027s only one argument to the string.\n\n(The rule that i18n strings must use the dictionary-style substitutions is due to the fact that grammar rules in different languages may require that arguments be used in different orders.)","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        for m in old.mixins:"},{"line_number":687,"context_line":"            if m.term \u003d\u003d mixin.term and m.scheme \u003d\u003d mixin.scheme:"},{"line_number":688,"context_line":"                m \u003d mixin"},{"line_number":689,"context_line":"                msg \u003d _(\u0027OS template is changed: %s%s\u0027) % m.scheme, m.term"},{"line_number":690,"context_line":"                LOG.debug(msg)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def action(self, entity, action, extras):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAGX%2F%2F%2F44%3D","line":689,"in_reply_to":"AAAAFX%2F%2F96Y%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8b7dddd200a87f61f4341178479a28e505a98559","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from nova import image"},{"line_number":29,"context_line":"from nova import utils"},{"line_number":30,"context_line":"from nova import log as logging"},{"line_number":31,"context_line":"from nova.api.occi.compute import templates"},{"line_number":32,"context_line":"from nova.api.occi.extensions import occi_future"},{"line_number":33,"context_line":"from nova.api.occi.extensions import openstack as os_extns"},{"line_number":34,"context_line":"from nova.compute import instance_types"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAGn%2F%2F%2F4U%3D","line":31,"updated":"2012-04-13 19:59:03.000000000","message":"These imports are still not in the correct order.  We really prefer that imports be in human-alphabetical order as if imports of the form \"from nova.api.occi.compute import templates\" actually read \"import nova.api.occi.compute.templates\"; this would mean that all these nova.api imports (and the ones for nova.compute) should come before \"from nova import compute\".","commit_id":"b680a93dd5d3e96e8117a3f39b7d85fd1b299d18"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"0672fd78d3e625a1461b2e4989e685ee6c7d303c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from nova import image"},{"line_number":29,"context_line":"from nova import utils"},{"line_number":30,"context_line":"from nova import log as logging"},{"line_number":31,"context_line":"from nova.api.occi.compute import templates"},{"line_number":32,"context_line":"from nova.api.occi.extensions import occi_future"},{"line_number":33,"context_line":"from nova.api.occi.extensions import openstack as os_extns"},{"line_number":34,"context_line":"from nova.compute import instance_types"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAGn%2F%2F%2F3o%3D","line":31,"in_reply_to":"AAAAGn%2F%2F%2F4U%3D","updated":"2012-04-13 20:21:15.000000000","message":"Done","commit_id":"b680a93dd5d3e96e8117a3f39b7d85fd1b299d18"}],"nova/api/occi/compute/templates.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7008fbadf18687b617ff8a5682ea0ec9a3c9cc48","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class OsTemplate(core_model.Mixin):"},{"line_number":23,"context_line":"    \"\"\""},{"line_number":24,"context_line":"    Represents the OS Template mechanism as per OCCI specification."},{"line_number":25,"context_line":"    An OS template is equivocal to an image in OpenStack"},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    def __init__(self, scheme, term, os_id\u003dNone, related\u003dNone, actions\u003dNone,"},{"line_number":28,"context_line":"                 title\u003d\u0027\u0027, attributes\u003dNone, location\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGX%2F%2F%2F1E%3D","line":25,"updated":"2012-04-13 16:05:24.000000000","message":"femtonit: \"equivalent\", not \"equivocal\".","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"95df42160609975b7bb04458f653e186687845d3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class OsTemplate(core_model.Mixin):"},{"line_number":23,"context_line":"    \"\"\""},{"line_number":24,"context_line":"    Represents the OS Template mechanism as per OCCI specification."},{"line_number":25,"context_line":"    An OS template is equivocal to an image in OpenStack"},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    def __init__(self, scheme, term, os_id\u003dNone, related\u003dNone, actions\u003dNone,"},{"line_number":28,"context_line":"                 title\u003d\u0027\u0027, attributes\u003dNone, location\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGn%2F%2F%2F%2Bc%3D","line":25,"in_reply_to":"AAAAGX%2F%2F%2F1E%3D","updated":"2012-04-13 19:05:59.000000000","message":"Done","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"}],"nova/api/occi/extensions/README":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"To create OCCI extensions:"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":" 1. Define the method to retreive all extension information. This method "},{"line_number":6,"context_line":"    **must** have the following signature:"},{"line_number":7,"context_line":"        def get_extensions()"},{"line_number":8,"context_line":"    It **must** return a list. That list **must** contain at least one"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAFX%2F%2F%2BwY%3D","line":5,"updated":"2012-04-10 16:36:31.000000000","message":"You have trailing whitespace all over the place in here.  Please clean that up.  Also, consider using the .rst format…","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"To create OCCI extensions:"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":" 1. Define the method to retreive all extension information. This method "},{"line_number":6,"context_line":"    **must** have the following signature:"},{"line_number":7,"context_line":"        def get_extensions()"},{"line_number":8,"context_line":"    It **must** return a list. That list **must** contain at least one"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAFX%2F%2F99g%3D","line":5,"in_reply_to":"AAAAFX%2F%2F%2BwY%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"}],"nova/api/occi/extensions/README.rst":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    ``def get_extensions()``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    It **must** return a list. That list **must** contain at least one dict. The dict **must** contain a pyssf backend handler. The dict **must** also contain a list of OCCI Categories that are handled by the pyssf backend handler. The OCCI Categories and pyssf backend handler **should** be defined in the same python file."},{"line_number":14,"context_line":" "},{"line_number":15,"context_line":" 2. Define the extension categories. Depending on your needs you can define Kind, Mixin, Link or Action extensions."},{"line_number":16,"context_line":" "},{"line_number":17,"context_line":" 3. Define the extension handler(s). "}],"source_content_type":"text/x-rst","patch_set":2,"id":"AAAAFX%2F%2F96U%3D","line":14,"updated":"2012-04-11 22:14:13.000000000","message":"You still have some trailing whitespace in here.  Also, I slightly prefer that paragraphs be word-wrapped; the advantage of RST as a documentation format is that it is both easily rendered into rich formats like HTML while also being readable from the console using tools like \"less\"; not word-wrapping paragraphs makes it more difficult to read text from the console.","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    ``def get_extensions()``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    It **must** return a list. That list **must** contain at least one dict. The dict **must** contain a pyssf backend handler. The dict **must** also contain a list of OCCI Categories that are handled by the pyssf backend handler. The OCCI Categories and pyssf backend handler **should** be defined in the same python file."},{"line_number":14,"context_line":" "},{"line_number":15,"context_line":" 2. Define the extension categories. Depending on your needs you can define Kind, Mixin, Link or Action extensions."},{"line_number":16,"context_line":" "},{"line_number":17,"context_line":" 3. Define the extension handler(s). "}],"source_content_type":"text/x-rst","patch_set":2,"id":"AAAAGX%2F%2F%2F40%3D","line":14,"in_reply_to":"AAAAFX%2F%2F96U%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"}],"nova/api/occi/extensions/__init__.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(\u0027nova.api.occi.extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BwU%3D","line":21,"updated":"2012-04-10 16:36:31.000000000","message":"\"import os\" is a standard import, and should be in the first group of imports, before the \"from nova import log as logging\".","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import log as logging"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(\u0027nova.api.occi.extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99c%3D","line":21,"in_reply_to":"AAAAFX%2F%2F%2BwU%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    pth \u003d FILE.rpartition(os.sep)"},{"line_number":32,"context_line":"    pth \u003d pth[0] + pth[1]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"#    mods_to_load \u003d []"},{"line_number":35,"context_line":"    #walkthrough the extensions directory"},{"line_number":36,"context_line":"    LOG.info(\u0027Loading the following extensions...\u0027)"},{"line_number":37,"context_line":"    for _, _, filenames in os.walk(pth):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BwQ%3D","line":34,"updated":"2012-04-10 16:36:31.000000000","message":"I would prefer you remove lines rather than simply commenting them out.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    pth \u003d FILE.rpartition(os.sep)"},{"line_number":32,"context_line":"    pth \u003d pth[0] + pth[1]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"#    mods_to_load \u003d []"},{"line_number":35,"context_line":"    #walkthrough the extensions directory"},{"line_number":36,"context_line":"    LOG.info(\u0027Loading the following extensions...\u0027)"},{"line_number":37,"context_line":"    for _, _, filenames in os.walk(pth):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99Y%3D","line":34,"in_reply_to":"AAAAFX%2F%2F%2BwQ%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":34,"context_line":"#    mods_to_load \u003d []"},{"line_number":35,"context_line":"    #walkthrough the extensions directory"},{"line_number":36,"context_line":"    LOG.info(\u0027Loading the following extensions...\u0027)"},{"line_number":37,"context_line":"    for _, _, filenames in os.walk(pth):"},{"line_number":38,"context_line":"        for filename in filenames:"},{"line_number":39,"context_line":"            if filename.endswith(\u0027.py\u0027) \\"},{"line_number":40,"context_line":"            and not filename.startswith(\u0027__init__\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BwM%3D","line":37,"updated":"2012-04-10 16:36:31.000000000","message":"Don\u0027t use \u0027_\u0027 as a scratch variable; you\u0027ll overwrite gettext() if you do, which can cause problems for the rest of nova.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"#    mods_to_load \u003d []"},{"line_number":35,"context_line":"    #walkthrough the extensions directory"},{"line_number":36,"context_line":"    LOG.info(\u0027Loading the following extensions...\u0027)"},{"line_number":37,"context_line":"    for _, _, filenames in os.walk(pth):"},{"line_number":38,"context_line":"        for filename in filenames:"},{"line_number":39,"context_line":"            if filename.endswith(\u0027.py\u0027) \\"},{"line_number":40,"context_line":"            and not filename.startswith(\u0027__init__\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99U%3D","line":37,"in_reply_to":"AAAAFX%2F%2F%2BwM%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    for _, _, filenames in os.walk(pth):"},{"line_number":38,"context_line":"        for filename in filenames:"},{"line_number":39,"context_line":"            if filename.endswith(\u0027.py\u0027) \\"},{"line_number":40,"context_line":"            and not filename.startswith(\u0027__init__\u0027):"},{"line_number":41,"context_line":"                mod \u003d filename.split(\u0027.py\u0027)[0]"},{"line_number":42,"context_line":"                exec(\u0027from %s import %s\u0027 % (PKG, mod))"},{"line_number":43,"context_line":"                extn \u003d eval(mod).get_extensions()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BwI%3D","line":40,"updated":"2012-04-10 16:36:31.000000000","message":"While I would prefer you enclose the expression in parentheses so you don\u0027t need the backslash, if you choose not to, please indent the second line appropriately.  Also, we prefer operators such as \"and\" be on the previous line, i.e.:\n\n    if filename.endswith(\u0027.py\u0027) and \\\n        not filename.startswith(\u0027__init__\u0027):","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    for _, _, filenames in os.walk(pth):"},{"line_number":38,"context_line":"        for filename in filenames:"},{"line_number":39,"context_line":"            if filename.endswith(\u0027.py\u0027) \\"},{"line_number":40,"context_line":"            and not filename.startswith(\u0027__init__\u0027):"},{"line_number":41,"context_line":"                mod \u003d filename.split(\u0027.py\u0027)[0]"},{"line_number":42,"context_line":"                exec(\u0027from %s import %s\u0027 % (PKG, mod))"},{"line_number":43,"context_line":"                extn \u003d eval(mod).get_extensions()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99Q%3D","line":40,"in_reply_to":"AAAAFX%2F%2F%2BwI%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    # Walkthrough the extensions directory"},{"line_number":38,"context_line":"    msg \u003d _(\u0027Loading the following extensions...\u0027)"},{"line_number":39,"context_line":"    LOG.info(msg)"},{"line_number":40,"context_line":"    for dirpath, dirnames, filenames in os.walk(pth):"},{"line_number":41,"context_line":"        for filename in filenames:"},{"line_number":42,"context_line":"            if (filename.endswith(\u0027.py\u0027) and"},{"line_number":43,"context_line":"                                        not filename.startswith(\u0027__init__\u0027)):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFX%2F%2F96M%3D","line":40,"updated":"2012-04-11 22:14:13.000000000","message":"This is fine as is; however, I should have mentioned that the convention in nova appears to be to prefix unused variables (be they function params or tuple elements, as here) with _, i.e.:\n\n    for _dirpath, _dirnames, filenames in os.walk(pth):\n\nTreat this as a femtonit, however.","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    # Walkthrough the extensions directory"},{"line_number":38,"context_line":"    msg \u003d _(\u0027Loading the following extensions...\u0027)"},{"line_number":39,"context_line":"    LOG.info(msg)"},{"line_number":40,"context_line":"    for dirpath, dirnames, filenames in os.walk(pth):"},{"line_number":41,"context_line":"        for filename in filenames:"},{"line_number":42,"context_line":"            if (filename.endswith(\u0027.py\u0027) and"},{"line_number":43,"context_line":"                                        not filename.startswith(\u0027__init__\u0027)):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAGX%2F%2F%2F5Q%3D","line":40,"in_reply_to":"AAAAFX%2F%2F96M%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                exec(\u0027from %s import %s\u0027 % (PKG, mod))"},{"line_number":46,"context_line":"                extn \u003d eval(mod).get_extensions()"},{"line_number":47,"context_line":"                EXTENSIONS.append(extn)"},{"line_number":48,"context_line":"                msg \u003d _(extn)"},{"line_number":49,"context_line":"                LOG.info(msg)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFX%2F%2F96I%3D","line":48,"updated":"2012-04-11 22:14:13.000000000","message":"This isn\u0027t the right way to use gettext(), unfortunately.  The parameter needs to be a bare, human-readable string; this restriction is to facilitate extracting the strings that need translation.  Further, there\u0027s no need to internationalize program names.\n\nWhat I would suggest is rewriting this line to be something like the following:\n\n    msg \u003d _(\u0027Loading occi extension: %s\u0027) % extn","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                exec(\u0027from %s import %s\u0027 % (PKG, mod))"},{"line_number":46,"context_line":"                extn \u003d eval(mod).get_extensions()"},{"line_number":47,"context_line":"                EXTENSIONS.append(extn)"},{"line_number":48,"context_line":"                msg \u003d _(extn)"},{"line_number":49,"context_line":"                LOG.info(msg)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAGX%2F%2F%2F5M%3D","line":48,"in_reply_to":"AAAAFX%2F%2F96I%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7008fbadf18687b617ff8a5682ea0ec9a3c9cc48","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(\u0027nova.api.occi.extensions\u0027)"},{"line_number":24,"context_line":"EXTENSIONS \u003d []"},{"line_number":25,"context_line":"PKG \u003d locals()[\u0027__package__\u0027]"},{"line_number":26,"context_line":"FILE \u003d locals()[\u0027__file__\u0027]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGX%2F%2F%2F08%3D","line":25,"updated":"2012-04-13 16:05:24.000000000","message":"There\u0027s no need to go through locals() here; a simple:\n\n    PKG \u003d __package__\n\nis sufficient.\n\nI should point out that generally abbreviated names seem to be discouraged; I suspect that PACKAGE may be preferred here.","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"95df42160609975b7bb04458f653e186687845d3","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(\u0027nova.api.occi.extensions\u0027)"},{"line_number":24,"context_line":"EXTENSIONS \u003d []"},{"line_number":25,"context_line":"PKG \u003d locals()[\u0027__package__\u0027]"},{"line_number":26,"context_line":"FILE \u003d locals()[\u0027__file__\u0027]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGn%2F%2F%2F%2BQ%3D","line":25,"in_reply_to":"AAAAGX%2F%2F%2F08%3D","updated":"2012-04-13 19:05:59.000000000","message":"Done","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7008fbadf18687b617ff8a5682ea0ec9a3c9cc48","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            if (filename.endswith(\u0027.py\u0027) and"},{"line_number":43,"context_line":"                                        not filename.startswith(\u0027__init__\u0027)):"},{"line_number":44,"context_line":"                mod \u003d filename.split(\u0027.py\u0027)[0]"},{"line_number":45,"context_line":"                exec(\u0027from %s import %s\u0027 % (PKG, mod))"},{"line_number":46,"context_line":"                extn \u003d eval(mod).get_extensions()"},{"line_number":47,"context_line":"                EXTENSIONS.append(extn)"},{"line_number":48,"context_line":"                msg \u003d _(\u0027Loading occi extension: %s\u0027) % extn"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGX%2F%2F%2F04%3D","line":45,"updated":"2012-04-13 16:05:24.000000000","message":"Unless you use PKG elsewhere, you could just use \"__package__\" directly wherever it appears in this file; same for FILE.","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"95df42160609975b7bb04458f653e186687845d3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            if (filename.endswith(\u0027.py\u0027) and"},{"line_number":43,"context_line":"                                        not filename.startswith(\u0027__init__\u0027)):"},{"line_number":44,"context_line":"                mod \u003d filename.split(\u0027.py\u0027)[0]"},{"line_number":45,"context_line":"                exec(\u0027from %s import %s\u0027 % (PKG, mod))"},{"line_number":46,"context_line":"                extn \u003d eval(mod).get_extensions()"},{"line_number":47,"context_line":"                EXTENSIONS.append(extn)"},{"line_number":48,"context_line":"                msg \u003d _(\u0027Loading occi extension: %s\u0027) % extn"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGn%2F%2F%2F%2BM%3D","line":45,"in_reply_to":"AAAAGX%2F%2F%2F04%3D","updated":"2012-04-13 19:05:59.000000000","message":"Done","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"}],"nova/api/occi/extensions/fiware.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":23,"context_line":"def get_extensions():"},{"line_number":24,"context_line":"    return ["},{"line_number":25,"context_line":"            {"},{"line_number":26,"context_line":"             \u0027categories\u0027:[TCP],"},{"line_number":27,"context_line":"             \u0027handler\u0027: backend.MixinBackend()"},{"line_number":28,"context_line":"            }"},{"line_number":29,"context_line":"           ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BwE%3D","line":26,"updated":"2012-04-10 16:36:31.000000000","message":"You\u0027re missing a space after the \u0027:\u0027, which IIRC is a PEP8 error.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"def get_extensions():"},{"line_number":24,"context_line":"    return ["},{"line_number":25,"context_line":"            {"},{"line_number":26,"context_line":"             \u0027categories\u0027:[TCP],"},{"line_number":27,"context_line":"             \u0027handler\u0027: backend.MixinBackend()"},{"line_number":28,"context_line":"            }"},{"line_number":29,"context_line":"           ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99M%3D","line":26,"in_reply_to":"AAAAFX%2F%2F%2BwE%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Trusted Compute Pool technology mixin definition"},{"line_number":32,"context_line":"_TCP_ATTRIBUTES \u003d {\u0027eu.fi-ware.compute.tcp\u0027: \u0027\u0027, }"},{"line_number":33,"context_line":"TCP \u003d core_model.Mixin(\\"},{"line_number":34,"context_line":"    \u0027http://schemas.fi-ware.eu/occi/infrastructure/compute#\u0027,"},{"line_number":35,"context_line":"    \u0027tcp\u0027, attributes\u003d_TCP_ATTRIBUTES)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BwA%3D","line":33,"updated":"2012-04-10 16:36:31.000000000","message":"This backslash is unnecessary.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Trusted Compute Pool technology mixin definition"},{"line_number":32,"context_line":"_TCP_ATTRIBUTES \u003d {\u0027eu.fi-ware.compute.tcp\u0027: \u0027\u0027, }"},{"line_number":33,"context_line":"TCP \u003d core_model.Mixin(\\"},{"line_number":34,"context_line":"    \u0027http://schemas.fi-ware.eu/occi/infrastructure/compute#\u0027,"},{"line_number":35,"context_line":"    \u0027tcp\u0027, attributes\u003d_TCP_ATTRIBUTES)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99I%3D","line":33,"in_reply_to":"AAAAFX%2F%2F%2BwA%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8b7dddd200a87f61f4341178479a28e505a98559","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from occi import core_model"},{"line_number":19,"context_line":"from occi import backend"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"######################### FIware Specific Additions ##########################"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAGn%2F%2F%2F4Q%3D","line":19,"updated":"2012-04-13 19:59:03.000000000","message":"\u0027b\u0027 comes before \u0027c\u0027…","commit_id":"b680a93dd5d3e96e8117a3f39b7d85fd1b299d18"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"0672fd78d3e625a1461b2e4989e685ee6c7d303c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from occi import core_model"},{"line_number":19,"context_line":"from occi import backend"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"######################### FIware Specific Additions ##########################"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAGn%2F%2F%2F38%3D","line":19,"in_reply_to":"AAAAGn%2F%2F%2F4Q%3D","updated":"2012-04-13 20:21:15.000000000","message":"Done","commit_id":"b680a93dd5d3e96e8117a3f39b7d85fd1b299d18"}],"nova/api/occi/extensions/occi_future.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import random"},{"line_number":19,"context_line":"from webob import exc"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import log as logging"},{"line_number":22,"context_line":"from nova import db"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bv8%3D","line":19,"updated":"2012-04-10 16:36:31.000000000","message":"webob.exc is a third-party import, and should be separated from the standard imports by a blank line.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import random"},{"line_number":19,"context_line":"from webob import exc"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from nova import log as logging"},{"line_number":22,"context_line":"from nova import db"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99E%3D","line":19,"in_reply_to":"AAAAFX%2F%2F%2Bv8%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova.compute import API"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from occi import core_model"},{"line_number":28,"context_line":"from occi import backend"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# TODO(dizz): Remove SSH Console and VNC Console once URI support is added to"},{"line_number":31,"context_line":"#             pyssf"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bv4%3D","line":28,"updated":"2012-04-10 16:36:31.000000000","message":"These imports are third-party imports, and should be with the webob.exc import…and should be in the proper order.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova.compute import API"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from occi import core_model"},{"line_number":28,"context_line":"from occi import backend"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# TODO(dizz): Remove SSH Console and VNC Console once URI support is added to"},{"line_number":31,"context_line":"#             pyssf"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F99A%3D","line":28,"in_reply_to":"AAAAFX%2F%2F%2Bv4%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            }"},{"line_number":54,"context_line":"           ]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# Console Link Extension"},{"line_number":57,"context_line":"CONSOLE_LINK \u003d core_model.Kind("},{"line_number":58,"context_line":"                        \u0027http://schemas.ogf.org/infrastructure/compute#\u0027,"},{"line_number":59,"context_line":"                        \u0027console\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bv0%3D","line":56,"updated":"2012-04-10 16:36:31.000000000","message":"There should be a second blank line between the definition for get_extensions() and this assignment (and its associated comment).","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            }"},{"line_number":54,"context_line":"           ]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"# Console Link Extension"},{"line_number":57,"context_line":"CONSOLE_LINK \u003d core_model.Kind("},{"line_number":58,"context_line":"                        \u0027http://schemas.ogf.org/infrastructure/compute#\u0027,"},{"line_number":59,"context_line":"                        \u0027console\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F988%3D","line":56,"in_reply_to":"AAAAFX%2F%2F%2Bv0%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":114,"context_line":"class UserSecurityGroupMixin(core_model.Mixin):"},{"line_number":115,"context_line":"    def __init__(self, scheme, term, related\u003dNone, actions\u003dNone,"},{"line_number":116,"context_line":"                 title\u003d\u0027\u0027, attributes\u003dNone, location\u003dNone):"},{"line_number":117,"context_line":"        super(UserSecurityGroupMixin, self).__init__(scheme, term, related,"},{"line_number":118,"context_line":"                                                 actions, title,"},{"line_number":119,"context_line":"                                                 attributes, location)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bvw%3D","line":117,"updated":"2012-04-10 16:36:31.000000000","message":"Is this __init__() necessary?  As far as I can see, it doesn\u0027t add anything to the inherited __init__().","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":114,"context_line":"class UserSecurityGroupMixin(core_model.Mixin):"},{"line_number":115,"context_line":"    def __init__(self, scheme, term, related\u003dNone, actions\u003dNone,"},{"line_number":116,"context_line":"                 title\u003d\u0027\u0027, attributes\u003dNone, location\u003dNone):"},{"line_number":117,"context_line":"        super(UserSecurityGroupMixin, self).__init__(scheme, term, related,"},{"line_number":118,"context_line":"                                                 actions, title,"},{"line_number":119,"context_line":"                                                 attributes, location)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F984%3D","line":117,"in_reply_to":"AAAAFX%2F%2F%2Bvw%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        Retreive the security group by name associated with the security mixin."},{"line_number":167,"context_line":"        \u0027\u0027\u0027"},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            sec_group \u003d db.security_group_get_by_name(extras[\u0027nova_ctx\u0027], \\"},{"line_number":170,"context_line":"                                 extras[\u0027nova_ctx\u0027].project_id, sec_mixin.term)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            LOG.error(\u0027Security group does not exist.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2Bvo%3D","line":169,"updated":"2012-04-10 16:36:31.000000000","message":"This backslash is unnecessary.","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        Retreive the security group by name associated with the security mixin."},{"line_number":167,"context_line":"        \u0027\u0027\u0027"},{"line_number":168,"context_line":"        try:"},{"line_number":169,"context_line":"            sec_group \u003d db.security_group_get_by_name(extras[\u0027nova_ctx\u0027], \\"},{"line_number":170,"context_line":"                                 extras[\u0027nova_ctx\u0027].project_id, sec_mixin.term)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            LOG.error(\u0027Security group does not exist.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F980%3D","line":169,"in_reply_to":"AAAAFX%2F%2F%2Bvo%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"}],"nova/api/occi/extensions/openstack.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ea5e0ed2e1dafbb9d06fa0c79194f0a4ad5f26","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    def __init__(self):"},{"line_number":125,"context_line":"        super(OsComputeActionBackend, self).__init__()"},{"line_number":126,"context_line":"#        policy.reset()"},{"line_number":127,"context_line":"#        policy.init()"},{"line_number":128,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":129,"context_line":"        self.network_api \u003d net_api.API()"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F%2BvU%3D","line":127,"updated":"2012-04-10 16:36:31.000000000","message":"I would prefer you remove these lines rather than have them commented out.  If you need to leave them in, for the future, please put the \u0027#\u0027 just before the line you\u0027re commenting out, i.e.:\n\n    def __init__(self):\n        super(OsComputeActionBackend, self).__init__()\n        #policy.reset()\n        #policy.init()","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"99fa6da67cd5f269ce756eac616958de8550707b","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    def __init__(self):"},{"line_number":125,"context_line":"        super(OsComputeActionBackend, self).__init__()"},{"line_number":126,"context_line":"#        policy.reset()"},{"line_number":127,"context_line":"#        policy.init()"},{"line_number":128,"context_line":"        self.compute_api \u003d compute.API()"},{"line_number":129,"context_line":"        self.network_api \u003d net_api.API()"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAFX%2F%2F98w%3D","line":127,"in_reply_to":"AAAAFX%2F%2F%2BvU%3D","updated":"2012-04-11 21:31:17.000000000","message":"Done","commit_id":"04db33aa598cbd34c493badaf4f7a273d9edce2c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":105,"context_line":"# expected parameter is the floating IP pool to take the IP from"},{"line_number":106,"context_line":"OS_ALLOC_FLOATING_IP \u003d core_model.Action("},{"line_number":107,"context_line":"                \u0027http://schemas.openstack.org/instance/action#\u0027,"},{"line_number":108,"context_line":"                 \u0027alloc_float_ip\u0027, \u0027Allocate a floating IP to the \u0027 +"},{"line_number":109,"context_line":"                                                        \u0027compute resource.\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFX%2F%2F96A%3D","line":108,"updated":"2012-04-11 22:14:13.000000000","message":"There\u0027s no need to use the \u0027+\u0027 operator here.","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"# expected parameter is the floating IP pool to take the IP from"},{"line_number":106,"context_line":"OS_ALLOC_FLOATING_IP \u003d core_model.Action("},{"line_number":107,"context_line":"                \u0027http://schemas.openstack.org/instance/action#\u0027,"},{"line_number":108,"context_line":"                 \u0027alloc_float_ip\u0027, \u0027Allocate a floating IP to the \u0027 +"},{"line_number":109,"context_line":"                                                        \u0027compute resource.\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAGX%2F%2F%2F5I%3D","line":108,"in_reply_to":"AAAAFX%2F%2F96A%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"}],"nova/api/occi/wsgi.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7008fbadf18687b617ff8a5682ea0ec9a3c9cc48","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import image"},{"line_number":27,"context_line":"from nova import log"},{"line_number":28,"context_line":"from nova import wsgi"},{"line_number":29,"context_line":"from nova.api.occi import extensions"},{"line_number":30,"context_line":"from nova.api.occi import registry"},{"line_number":31,"context_line":"from nova.api.occi.compute import computeresource"},{"line_number":32,"context_line":"from nova.api.occi.compute import templates"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGX%2F%2F%2F0o%3D","line":29,"updated":"2012-04-13 16:05:24.000000000","message":"You missed import ordering in this file…","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"95df42160609975b7bb04458f653e186687845d3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import image"},{"line_number":27,"context_line":"from nova import log"},{"line_number":28,"context_line":"from nova import wsgi"},{"line_number":29,"context_line":"from nova.api.occi import extensions"},{"line_number":30,"context_line":"from nova.api.occi import registry"},{"line_number":31,"context_line":"from nova.api.occi.compute import computeresource"},{"line_number":32,"context_line":"from nova.api.occi.compute import templates"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGn%2F%2F%2F9k%3D","line":29,"in_reply_to":"AAAAGX%2F%2F%2F0o%3D","updated":"2012-04-13 19:05:59.000000000","message":"Done","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"}],"nova/tests/api/occi/extensions/test_occi_future.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import flags"},{"line_number":26,"context_line":"from nova import test"},{"line_number":27,"context_line":"from nova.api.occi import registry"},{"line_number":28,"context_line":"from nova.api.occi.extensions import occi_future"},{"line_number":29,"context_line":"from nova.tests.api import occi"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFX%2F%2F958%3D","line":28,"updated":"2012-04-11 22:14:13.000000000","message":"\u0027e\u0027 comes before \u0027r\u0027","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from nova import flags"},{"line_number":26,"context_line":"from nova import test"},{"line_number":27,"context_line":"from nova.api.occi import registry"},{"line_number":28,"context_line":"from nova.api.occi.extensions import occi_future"},{"line_number":29,"context_line":"from nova.tests.api import occi"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAGX%2F%2F%2F5E%3D","line":28,"in_reply_to":"AAAAFX%2F%2F958%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7008fbadf18687b617ff8a5682ea0ec9a3c9cc48","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def test_create_for_success(self):"},{"line_number":63,"context_line":"        self.class_under_test.init_sec_group(self.category, self.extras)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"#    def test_retrieve_for_success(self):"},{"line_number":66,"context_line":"#        self.class_under_test.retrieve(self.entity, self.extras)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"#    def test_update_for_success(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGX%2F%2F%2F0g%3D","line":65,"updated":"2012-04-13 16:05:24.000000000","message":"I would prefer that these tests be removed until they are implemented.","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"95df42160609975b7bb04458f653e186687845d3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def test_create_for_success(self):"},{"line_number":63,"context_line":"        self.class_under_test.init_sec_group(self.category, self.extras)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"#    def test_retrieve_for_success(self):"},{"line_number":66,"context_line":"#        self.class_under_test.retrieve(self.entity, self.extras)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"#    def test_update_for_success(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAGn%2F%2F%2F%2BI%3D","line":65,"in_reply_to":"AAAAGX%2F%2F%2F0g%3D","updated":"2012-04-13 19:05:59.000000000","message":"Done","commit_id":"625866b17dcd50ffc7dc45fab41aeffde37a1027"}],"nova/tests/api/occi/test_computeresource.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b0ddd6fdd3e5c8f9f4cbeb2d22fb054fa9e2d6ce","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import gettext"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from occi.core_model import Entity"},{"line_number":21,"context_line":"from occi.extensions import infrastructure"},{"line_number":22,"context_line":"from webob import exc"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAFX%2F%2F950%3D","line":20,"updated":"2012-04-11 22:14:13.000000000","message":"We prefer to import modules rather than objects or classes.  There are exceptions to this rule, of course, but I don\u0027t think this qualifies.  I\u0027d suggest doing:\n\n    from occi import core_module\n\nThen use:\n\n    core_module.Entity\n\nYou can also just:\n\n    import occi.core_module\n\n    occi.core_module.Entity\n\nDepending on your preferences.","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"},{"author":{"_account_id":438,"name":"dizz","email":"andy@edmonds.be","username":"andy-edmonds"},"change_message_id":"44adb26991a77af6a08ac27788a9108292c3956a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import gettext"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from occi.core_model import Entity"},{"line_number":21,"context_line":"from occi.extensions import infrastructure"},{"line_number":22,"context_line":"from webob import exc"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAGX%2F%2F%2F5A%3D","line":20,"in_reply_to":"AAAAFX%2F%2F950%3D","updated":"2012-04-13 15:04:26.000000000","message":"Done","commit_id":"e3db527e07bd8d77015129ab6b8076dd33883bac"}]}
