)]}'
{"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8069f3ca95fb47660a84f24b7f3164d8b2a35c44","unresolved":false,"context_lines":[{"line_number":295,"context_line":"    console_enabled \u003d types.boolean"},{"line_number":296,"context_line":"    \"Indicates whether the console access is enabled or disabled on the node.\""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    instance_info \u003d {wtypes.text: types.json_type}"},{"line_number":299,"context_line":"    \"This node\u0027s instance info.\""},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    driver \u003d wsme.wsattr(wtypes.text, mandatory\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FAP8%3D","line":298,"updated":"2014-03-10 19:00:23.000000000","message":"should be same type as driver_info, properties, and extra fields.","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fa72d142af5a22cd01452090a5a2464031930948","unresolved":false,"context_lines":[{"line_number":295,"context_line":"    console_enabled \u003d types.boolean"},{"line_number":296,"context_line":"    \"Indicates whether the console access is enabled or disabled on the node.\""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    instance_info \u003d {wtypes.text: types.json_type}"},{"line_number":299,"context_line":"    \"This node\u0027s instance info.\""},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    driver \u003d wsme.wsattr(wtypes.text, mandatory\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2Fi8%3D","line":298,"in_reply_to":"AAAAVn%2F%2FAP8%3D","updated":"2014-03-10 20:26:49.000000000","message":"I\u0027d like this field to be able to handle a nested dict, which the type you\u0027re suggesting does not handle.","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"}],"ironic/api/controllers/v1/types.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8069f3ca95fb47660a84f24b7f3164d8b2a35c44","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                     % {\u0027type\u0027: self.types, \u0027value\u0027: type(value)})"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"json_type \u003d MultiType(list, dict, six.integer_types, wtypes.text)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FAPU%3D","line":179,"updated":"2014-03-10 19:00:23.000000000","message":"for clarity of reviews, please split this into two patch sets.\n\nI\u0027d actually prefer if this didn\u0027t deviate from the existing MultiType definition used by driver_info, so that we don\u0027t risk introducing unexpected behavior this late in the cycle.","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fa72d142af5a22cd01452090a5a2464031930948","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                     % {\u0027type\u0027: self.types, \u0027value\u0027: type(value)})"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"json_type \u003d MultiType(list, dict, six.integer_types, wtypes.text)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2FiQ%3D","line":179,"in_reply_to":"AAAAVn%2F%2FAPU%3D","updated":"2014-03-10 20:26:49.000000000","message":"I can split this out. I\u0027m fine with pushing this feature to Juno to avoid introducing new behavior (seems reasonable anyway as this review contains DB migrations).","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"}],"ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d924db615d6915d4063f3031571541959bd5f41e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"def upgrade():"},{"line_number":20,"context_line":"    ### commands auto generated by Alembic - please adjust! ###"},{"line_number":21,"context_line":"    op.add_column(\u0027nodes\u0027, sa.Column(\u0027instance_info\u0027,"},{"line_number":22,"context_line":"                                     models.JSONEncodedDict(255),"},{"line_number":23,"context_line":"                                     nullable\u003dTrue))"},{"line_number":24,"context_line":"    ### end Alembic commands ###"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FAdY%3D","line":22,"updated":"2014-03-10 18:35:55.000000000","message":"Thinking about it more, this should probably be type TEXT rather than VARCHAR. This data could contain configdrive data, etc, which could potentially be very large.","commit_id":"4a046f5a48b5324038a290ba3aa63db31c71f22f"}],"ironic/db/sqlalchemy/models.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8069f3ca95fb47660a84f24b7f3164d8b2a35c44","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    type \u003d list"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class JSONEncodedLargeDict(JsonEncodedDict):"},{"line_number":86,"context_line":"    \"\"\"Represents dict serialized as json-encoded string in db.\"\"\""},{"line_number":87,"context_line":"    impl \u003d TEXT"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FAPE%3D","line":85,"updated":"2014-03-10 19:00:23.000000000","message":"What exactly is insufficient about the existing JSONEncodedDict class?","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fa72d142af5a22cd01452090a5a2464031930948","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    type \u003d list"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"class JSONEncodedLargeDict(JsonEncodedDict):"},{"line_number":86,"context_line":"    \"\"\"Represents dict serialized as json-encoded string in db.\"\"\""},{"line_number":87,"context_line":"    impl \u003d TEXT"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2FgY%3D","line":85,"in_reply_to":"AAAAVn%2F%2FAPE%3D","updated":"2014-03-10 20:26:49.000000000","message":"instance_info is intended to store configdrive data and more. This field could be very large (and also very sparse), and I believe that MySQL will perform better if this is a TEXT field rather than VARCHAR(\u003c4k-64k?\u003e).","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"8069f3ca95fb47660a84f24b7f3164d8b2a35c44","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    target_provision_state \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":155,"context_line":"    provision_updated_at \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":156,"context_line":"    last_error \u003d Column(Text, nullable\u003dTrue)"},{"line_number":157,"context_line":"    instance_info \u003d Column(JSONEncodedDict)"},{"line_number":158,"context_line":"    properties \u003d Column(JSONEncodedDict)"},{"line_number":159,"context_line":"    driver \u003d Column(String(15))"},{"line_number":160,"context_line":"    driver_info \u003d Column(JSONEncodedDict)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2FAOs%3D","line":157,"updated":"2014-03-10 19:00:23.000000000","message":"this does not match the migration, which is creating this column as a JSONEncodedLargeDict.","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fa72d142af5a22cd01452090a5a2464031930948","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    target_provision_state \u003d Column(String(15), nullable\u003dTrue)"},{"line_number":155,"context_line":"    provision_updated_at \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":156,"context_line":"    last_error \u003d Column(Text, nullable\u003dTrue)"},{"line_number":157,"context_line":"    instance_info \u003d Column(JSONEncodedDict)"},{"line_number":158,"context_line":"    properties \u003d Column(JSONEncodedDict)"},{"line_number":159,"context_line":"    driver \u003d Column(String(15))"},{"line_number":160,"context_line":"    driver_info \u003d Column(JSONEncodedDict)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B%2FgU%3D","line":157,"in_reply_to":"AAAAVn%2F%2FAOs%3D","updated":"2014-03-10 20:26:49.000000000","message":"Done","commit_id":"2dab95925b6be3a4b8fc1a26ece56cd08350a25c"}]}
