)]}'
{"zun/db/api.py":[{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"fb49bc576c6b97e4e965ca1b6f253e1c5526fd9e","unresolved":false,"context_lines":[{"line_number":535,"context_line":"    :param marker: the last item of the previous page; we return the next"},{"line_number":536,"context_line":"                   result set."},{"line_number":537,"context_line":"    :param sort_key: Attribute by which results should be sorted."},{"line_number":538,"context_line":"                     (asc, desc)"},{"line_number":539,"context_line":"    :returns: A list of tuples of the specified columns."},{"line_number":540,"context_line":"    \"\"\""},{"line_number":541,"context_line":"    return _get_dbdriver_instance().list_compute_nodes("}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_752e18fc","line":538,"updated":"2017-02-24 10:15:25.000000000","message":"Nit: sort_dir is missing here","commit_id":"e5708faf19bb0bd2fefc264056615f4e108165b7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"d1231fa86cefb64504f172bc1bdc8aab4d66e545","unresolved":false,"context_lines":[{"line_number":535,"context_line":"    :param marker: the last item of the previous page; we return the next"},{"line_number":536,"context_line":"                   result set."},{"line_number":537,"context_line":"    :param sort_key: Attribute by which results should be sorted."},{"line_number":538,"context_line":"                     (asc, desc)"},{"line_number":539,"context_line":"    :returns: A list of tuples of the specified columns."},{"line_number":540,"context_line":"    \"\"\""},{"line_number":541,"context_line":"    return _get_dbdriver_instance().list_compute_nodes("}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_6c88f871","line":538,"in_reply_to":"da36d5c6_752e18fc","updated":"2017-02-24 22:51:16.000000000","message":"Done","commit_id":"e5708faf19bb0bd2fefc264056615f4e108165b7"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"fb49bc576c6b97e4e965ca1b6f253e1c5526fd9e","unresolved":false,"context_lines":[{"line_number":545,"context_line":"def create_compute_node(context, values):"},{"line_number":546,"context_line":"    \"\"\"Create a new compute node."},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    :param values: A dict containing several items used to identify"},{"line_number":549,"context_line":"                   and track the compute node, and several dicts which are"},{"line_number":550,"context_line":"                   passed into the Drivers when managing this compute node."},{"line_number":551,"context_line":"    :returns: A compute node."}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_9518ecd4","line":548,"updated":"2017-02-24 10:15:25.000000000","message":"Nit: ditto for context","commit_id":"e5708faf19bb0bd2fefc264056615f4e108165b7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"d1231fa86cefb64504f172bc1bdc8aab4d66e545","unresolved":false,"context_lines":[{"line_number":545,"context_line":"def create_compute_node(context, values):"},{"line_number":546,"context_line":"    \"\"\"Create a new compute node."},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    :param values: A dict containing several items used to identify"},{"line_number":549,"context_line":"                   and track the compute node, and several dicts which are"},{"line_number":550,"context_line":"                   passed into the Drivers when managing this compute node."},{"line_number":551,"context_line":"    :returns: A compute node."}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_ac7e7067","line":548,"in_reply_to":"da36d5c6_9518ecd4","updated":"2017-02-24 22:51:16.000000000","message":"Done","commit_id":"e5708faf19bb0bd2fefc264056615f4e108165b7"}],"zun/db/sqlalchemy/alembic/versions/9b515012587d_add_compute_node_table.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"d16ccf8ae866a60ab5511ede0633f3b9c5003e89","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":36,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":37,"context_line":"        sa.Column(\u0027hostname\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":38,"context_line":"        sa.Column(\u0027numa_topology\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"        sa.PrimaryKeyConstraint(\u0027uuid\u0027),"},{"line_number":40,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_7b51d935","line":38,"updated":"2017-02-23 04:57:01.000000000","message":"sa.Text() while the model defines this field as a string. Will this create an issue?","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9b68f71c55b41570cf82c302e737bf0b79d20dc3","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":36,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":37,"context_line":"        sa.Column(\u0027hostname\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":38,"context_line":"        sa.Column(\u0027numa_topology\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"        sa.PrimaryKeyConstraint(\u0027uuid\u0027),"},{"line_number":40,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_ec908c45","line":38,"in_reply_to":"da36d5c6_7b51d935","updated":"2017-02-23 22:40:05.000000000","message":"Done","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"7c9e3a3bc67a0cb5d449496c0a77806bb65e6d78","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime(), nullable\u003dTrue),"},{"line_number":36,"context_line":"        sa.Column(\u0027uuid\u0027, sa.String(length\u003d36), nullable\u003dFalse),"},{"line_number":37,"context_line":"        sa.Column(\u0027hostname\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":38,"context_line":"        sa.Column(\u0027numa_topology\u0027, sa.Text(), nullable\u003dTrue),"},{"line_number":39,"context_line":"        sa.PrimaryKeyConstraint(\u0027uuid\u0027),"},{"line_number":40,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_a4016008","line":38,"in_reply_to":"da36d5c6_7b51d935","updated":"2017-02-23 15:58:35.000000000","message":"will change the model to text","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"}],"zun/db/sqlalchemy/api.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"48ec180c563527ba509593a98c765bf5a8098524","unresolved":false,"context_lines":[{"line_number":672,"context_line":"                               sort_key, sort_dir, query,"},{"line_number":673,"context_line":"                               default_sort_key\u003d\u0027uuid\u0027)"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def create_compute_node(self, context, values):"},{"line_number":676,"context_line":"        # ensure defaults are present for new resource providers"},{"line_number":677,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":678,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_965664cc","line":675,"updated":"2017-02-23 05:10:54.000000000","message":"I called this method as \"create_node\" - again I am ok to change it if you recommend :)\n\nIn this method we aren\u0027t quite serializing the numa_topology object. Should it be serialized before calling the models method?","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"7c9e3a3bc67a0cb5d449496c0a77806bb65e6d78","unresolved":false,"context_lines":[{"line_number":672,"context_line":"                               sort_key, sort_dir, query,"},{"line_number":673,"context_line":"                               default_sort_key\u003d\u0027uuid\u0027)"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def create_compute_node(self, context, values):"},{"line_number":676,"context_line":"        # ensure defaults are present for new resource providers"},{"line_number":677,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":678,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_af46994c","line":675,"in_reply_to":"da36d5c6_965664cc","updated":"2017-02-23 15:58:35.000000000","message":"I will try to implement the serializing/deserializing in the next revision.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"48ec180c563527ba509593a98c765bf5a8098524","unresolved":false,"context_lines":[{"line_number":673,"context_line":"                               default_sort_key\u003d\u0027uuid\u0027)"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def create_compute_node(self, context, values):"},{"line_number":676,"context_line":"        # ensure defaults are present for new resource providers"},{"line_number":677,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":678,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_7633b0ab","line":676,"updated":"2017-02-23 05:10:54.000000000","message":"This line is not applicable in this case.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9b68f71c55b41570cf82c302e737bf0b79d20dc3","unresolved":false,"context_lines":[{"line_number":673,"context_line":"                               default_sort_key\u003d\u0027uuid\u0027)"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"    def create_compute_node(self, context, values):"},{"line_number":676,"context_line":"        # ensure defaults are present for new resource providers"},{"line_number":677,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":678,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":679,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_acc69465","line":676,"in_reply_to":"da36d5c6_7633b0ab","updated":"2017-02-23 22:40:05.000000000","message":"Done","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"fb49bc576c6b97e4e965ca1b6f253e1c5526fd9e","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        if filters is None:"},{"line_number":658,"context_line":"            filters \u003d {}"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        filter_names \u003d [\u0027hostname\u0027]"},{"line_number":661,"context_line":"        for name in filter_names:"},{"line_number":662,"context_line":"            if name in filters:"},{"line_number":663,"context_line":"                query \u003d query.filter_by(**{name: filters[name]})"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_b5e7b0aa","line":660,"updated":"2017-02-24 10:15:25.000000000","message":"project_id, user_id are also valid filters. But I see both were not included in db schema. Do we need to add it to all tables?","commit_id":"e5708faf19bb0bd2fefc264056615f4e108165b7"}],"zun/db/sqlalchemy/models.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"fd05701e716a894f2eb6945ab031a1cbc4d72f93","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        foreign_keys\u003dresource_provider_id)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class ComputeNode(Base):"},{"line_number":264,"context_line":"    \"\"\"Represents an compute node. \"\"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    __tablename__ \u003d \u0027compute_node\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_166194d3","line":263,"updated":"2017-02-23 05:02:39.000000000","message":"https://review.openstack.org/#/c/436572/3/zun/objects/compute_node.py --\u003e in this the Object is called NodeInfo - I am not sure if the model representation of the object should have the same name? But it would be good to be consistent. You could even ask me to change my patch - i am open to that idea :)","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"7c9e3a3bc67a0cb5d449496c0a77806bb65e6d78","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        foreign_keys\u003dresource_provider_id)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class ComputeNode(Base):"},{"line_number":264,"context_line":"    \"\"\"Represents an compute node. \"\"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    __tablename__ \u003d \u0027compute_node\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_8f6ab57f","line":263,"in_reply_to":"da36d5c6_166194d3","updated":"2017-02-23 15:58:35.000000000","message":"I see. I saw the file name is objects/compute_node.py so I used ComputeNode as the class name here. I am ok with either ComputeNode and NodeInfo but slightly lean to ComputeNode for consistency with nova.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"fd05701e716a894f2eb6945ab031a1cbc4d72f93","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class ComputeNode(Base):"},{"line_number":264,"context_line":"    \"\"\"Represents an compute node. \"\"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    __tablename__ \u003d \u0027compute_node\u0027"},{"line_number":267,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_569dccba","line":264,"updated":"2017-02-23 05:02:39.000000000","message":"Represents \"a\" compute node information or something like that if possible.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9b68f71c55b41570cf82c302e737bf0b79d20dc3","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"class ComputeNode(Base):"},{"line_number":264,"context_line":"    \"\"\"Represents an compute node. \"\"\""},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    __tablename__ \u003d \u0027compute_node\u0027"},{"line_number":267,"context_line":"    __table_args__ \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_2c80e4f6","line":264,"in_reply_to":"da36d5c6_569dccba","updated":"2017-02-23 22:40:05.000000000","message":"Done","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"9a3f042f39cf3f9a4d734d759401668d070a3bc7","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        table_args()"},{"line_number":269,"context_line":"    )"},{"line_number":270,"context_line":"    uuid \u003d Column(String(36), primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":271,"context_line":"    hostname \u003d Column(String, nullable\u003dFalse)"},{"line_number":272,"context_line":"    numa_topology \u003d Column(String, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_50c0742a","line":271,"updated":"2017-02-23 03:49:46.000000000","message":"A length \u0027s better to specify","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9b68f71c55b41570cf82c302e737bf0b79d20dc3","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        table_args()"},{"line_number":269,"context_line":"    )"},{"line_number":270,"context_line":"    uuid \u003d Column(String(36), primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":271,"context_line":"    hostname \u003d Column(String, nullable\u003dFalse)"},{"line_number":272,"context_line":"    numa_topology \u003d Column(String, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_4c851805","line":271,"in_reply_to":"da36d5c6_50c0742a","updated":"2017-02-23 22:40:05.000000000","message":"Done","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"d16ccf8ae866a60ab5511ede0633f3b9c5003e89","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    )"},{"line_number":270,"context_line":"    uuid \u003d Column(String(36), primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":271,"context_line":"    hostname \u003d Column(String, nullable\u003dFalse)"},{"line_number":272,"context_line":"    numa_topology \u003d Column(String, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_762d7094","line":272,"updated":"2017-02-23 04:57:01.000000000","message":"Here it\u0027s a string. NUMATopology is actually an object but i guess it would be se-realized and stored by calling the to_list() method?","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c94bf2c84109be6c5bda495fded3e5cf060c7a00","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    )"},{"line_number":270,"context_line":"    uuid \u003d Column(String(36), primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":271,"context_line":"    hostname \u003d Column(String, nullable\u003dFalse)"},{"line_number":272,"context_line":"    numa_topology \u003d Column(String, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_cc6ba4b5","line":272,"in_reply_to":"da36d5c6_616048a6","updated":"2017-02-24 22:50:26.000000000","message":"I changed it to JSONEncodedDict since the implementation looks much easier than string. BTW, nova planed to move away from string as well: https://github.com/openstack/nova/blob/master/nova/objects/compute_node.py#L80","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"53863be60551057f8339ef7f0ae9131317e24a58","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    )"},{"line_number":270,"context_line":"    uuid \u003d Column(String(36), primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":271,"context_line":"    hostname \u003d Column(String, nullable\u003dFalse)"},{"line_number":272,"context_line":"    numa_topology \u003d Column(String, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_bc0fc786","line":272,"in_reply_to":"da36d5c6_616048a6","updated":"2017-02-23 08:34:22.000000000","message":"The question is more towards - \"Where are we serializing it\" - which I have asked in the db api module.\n\nHowever, the other problem is - we have the same field declared as a Text in the alembic file but it\u0027s a string here. So i was willing to know if both the data types are compatible.\n\nNova seems to have declared it as a text here: https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/models.py#L174","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"aa1f330707a9c8dc1090a72aceb83764f1b55183","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    )"},{"line_number":270,"context_line":"    uuid \u003d Column(String(36), primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":271,"context_line":"    hostname \u003d Column(String, nullable\u003dFalse)"},{"line_number":272,"context_line":"    numa_topology \u003d Column(String, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_616048a6","line":272,"in_reply_to":"da36d5c6_762d7094","updated":"2017-02-23 06:03:56.000000000","message":"yes, numa object will be saved as a string. This is what nova do as same way.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"c94bf2c84109be6c5bda495fded3e5cf060c7a00","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    )"},{"line_number":270,"context_line":"    uuid \u003d Column(String(36), primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":271,"context_line":"    hostname \u003d Column(String, nullable\u003dFalse)"},{"line_number":272,"context_line":"    numa_topology \u003d Column(String, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_8ca44c08","line":272,"in_reply_to":"da36d5c6_bc0fc786","updated":"2017-02-24 22:50:26.000000000","message":"In the latest patchset, I serialized/de-serialized it in compute_node objects, under create() and _from_db_objects().","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"}],"zun/tests/unit/db/utils.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"d16ccf8ae866a60ab5511ede0633f3b9c5003e89","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return dbapi.create_allocation(kw[\u0027context\u0027], allocation)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"NUMA_TOPOLOGY \u003d \"\"\"{"},{"line_number":243,"context_line":"    \"cells\": ["},{"line_number":244,"context_line":"        {"},{"line_number":245,"context_line":"            \"id\": 0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_9b392df5","line":242,"updated":"2017-02-23 04:57:01.000000000","message":"We aren\u0027t quite reporting the NUMA_TOPOLOGY like this.\nWe don\u0027t call it \"cells\" nor do we have the other parameters like cpu_usage, memory_usage etc... \n\nA more practical representation as per ZUN would be better I think than a NOVA\u0027s representation of the data.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"7c9e3a3bc67a0cb5d449496c0a77806bb65e6d78","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return dbapi.create_allocation(kw[\u0027context\u0027], allocation)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"NUMA_TOPOLOGY \u003d \"\"\"{"},{"line_number":243,"context_line":"    \"cells\": ["},{"line_number":244,"context_line":"        {"},{"line_number":245,"context_line":"            \"id\": 0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_2fe0e9f9","line":242,"in_reply_to":"da36d5c6_7c9c6f0f","updated":"2017-02-23 15:58:35.000000000","message":"I will try the os_capability_linux module and update the data here.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"53863be60551057f8339ef7f0ae9131317e24a58","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return dbapi.create_allocation(kw[\u0027context\u0027], allocation)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"NUMA_TOPOLOGY \u003d \"\"\"{"},{"line_number":243,"context_line":"    \"cells\": ["},{"line_number":244,"context_line":"        {"},{"line_number":245,"context_line":"            \"id\": 0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_7c9c6f0f","line":242,"in_reply_to":"da36d5c6_81337caa","updated":"2017-02-23 08:34:22.000000000","message":"We have the references at a couple of places:\nhttps://github.com/openstack/zun/blob/master/zun/tests/unit/container/docker/test_docker_driver.py#L39\n\nhttps://github.com/openstack/zun/blob/master/zun/tests/unit/objects/test_numa.py\n\nThe NUMA data is not obtained via numactl. Right now - it\u0027s formulated by looking at the lscpu output. Since I felt that parsing lscpu is easier (And lscpu seems more prevalent in distros than numactl).\n\nThe code for this is here:\n\nhttps://github.com/openstack/zun/blob/master/zun/container/os_capability/linux/os_capability_linux.py\n\nWe can replace the implementation of the get_numa_cpu_info() method any point time to a different backend (like numactl) if we want.\nThere\u0027s a object contract on the data obtained but I have maintained that in the parent class:\nhttps://github.com/openstack/zun/blob/master/zun/container/os_capability/host_capability.py#L30\n\nFor this very same reason.","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"9b68f71c55b41570cf82c302e737bf0b79d20dc3","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return dbapi.create_allocation(kw[\u0027context\u0027], allocation)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"NUMA_TOPOLOGY \u003d \"\"\"{"},{"line_number":243,"context_line":"    \"cells\": ["},{"line_number":244,"context_line":"        {"},{"line_number":245,"context_line":"            \"id\": 0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_cc710846","line":242,"in_reply_to":"da36d5c6_9b392df5","updated":"2017-02-23 22:40:05.000000000","message":"Done","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"aa1f330707a9c8dc1090a72aceb83764f1b55183","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return dbapi.create_allocation(kw[\u0027context\u0027], allocation)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"NUMA_TOPOLOGY \u003d \"\"\"{"},{"line_number":243,"context_line":"    \"cells\": ["},{"line_number":244,"context_line":"        {"},{"line_number":245,"context_line":"            \"id\": 0,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da36d5c6_81337caa","line":242,"in_reply_to":"da36d5c6_9b392df5","updated":"2017-02-23 06:03:56.000000000","message":"hmm.. is there DOCs/spec to tell what\u0027 ZUN\u0027s numa topology looks like?\n\nFor Nova, it\u0027s from libvirt, I wonder where does ZUN\u0027s numa topology come from?  numactl /numd on host ? or does anyone know how docker co-work with numa topology?","commit_id":"1b15c32f2bde52e66226cf312a676dfbc8dd9ceb"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"f60d845d20da7e15e2b10d0ad084af37e2320567","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return dbapi.create_allocation(kw[\u0027context\u0027], allocation)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"NUMA_TOPOLOGY \u003d \"\"\"{"},{"line_number":243,"context_line":"    \"nodes\": ["},{"line_number":244,"context_line":"        {"},{"line_number":245,"context_line":"            \"id\": 0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_b056de03","line":242,"updated":"2017-02-24 10:19:57.000000000","message":"test failure is because numa_topology is defined as dict in db schema and it is string here.","commit_id":"e5708faf19bb0bd2fefc264056615f4e108165b7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"d1231fa86cefb64504f172bc1bdc8aab4d66e545","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    return dbapi.create_allocation(kw[\u0027context\u0027], allocation)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"NUMA_TOPOLOGY \u003d \"\"\"{"},{"line_number":243,"context_line":"    \"nodes\": ["},{"line_number":244,"context_line":"        {"},{"line_number":245,"context_line":"            \"id\": 0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da36d5c6_ec94e88b","line":242,"in_reply_to":"da36d5c6_b056de03","updated":"2017-02-24 22:51:16.000000000","message":"Done","commit_id":"e5708faf19bb0bd2fefc264056615f4e108165b7"}]}
