)]}'
{"zun/db/sqlalchemy/api.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"e6ba83d1d06070391f69ee2554d0939cc21c04f9","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        return _paginate_query(models.Inventory, limit, marker,"},{"line_number":480,"context_line":"                               sort_key, sort_dir, query)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def create_inventory(self, context, values):"},{"line_number":483,"context_line":"        # ensure defaults are present for new inventories"},{"line_number":484,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":485,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_af56f6cf","line":482,"updated":"2017-02-12 05:15:49.000000000","message":"A resource provider should always be associated with the inventory right?\n\nApplies to all the cases, we should able to say \" For resource_provider x - what\u0027s the inventory value for resource_class yy\"","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"03c2764c1054cfabbab6d9e54ad43dc04259a06f","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        return _paginate_query(models.Inventory, limit, marker,"},{"line_number":480,"context_line":"                               sort_key, sort_dir, query)"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"    def create_inventory(self, context, values):"},{"line_number":483,"context_line":"        # ensure defaults are present for new inventories"},{"line_number":484,"context_line":"        if not values.get(\u0027uuid\u0027):"},{"line_number":485,"context_line":"            values[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_3ee95681","line":482,"in_reply_to":"fa31d9ce_af56f6cf","updated":"2017-02-12 16:57:54.000000000","message":"Done. Make resource provider id as mandatory.","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"e6ba83d1d06070391f69ee2554d0939cc21c04f9","unresolved":false,"context_lines":[{"line_number":528,"context_line":"            if count !\u003d 1:"},{"line_number":529,"context_line":"                raise exception.InventoryNotFound(inventory_id)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def update_inventory(self, context, inventory_id, values):"},{"line_number":532,"context_line":"        # NOTE(dtantsur): this can lead to very strange errors"},{"line_number":533,"context_line":"        if \u0027uuid\u0027 in values:"},{"line_number":534,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Inventory.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_4f457a15","line":531,"updated":"2017-02-12 05:15:49.000000000","message":"Can we update an inventory without a resource_provider associated with it?","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"03c2764c1054cfabbab6d9e54ad43dc04259a06f","unresolved":false,"context_lines":[{"line_number":528,"context_line":"            if count !\u003d 1:"},{"line_number":529,"context_line":"                raise exception.InventoryNotFound(inventory_id)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def update_inventory(self, context, inventory_id, values):"},{"line_number":532,"context_line":"        # NOTE(dtantsur): this can lead to very strange errors"},{"line_number":533,"context_line":"        if \u0027uuid\u0027 in values:"},{"line_number":534,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Inventory.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_7e03ce42","line":531,"in_reply_to":"fa31d9ce_4f457a15","updated":"2017-02-12 16:57:54.000000000","message":"Done. Added a foreign key constraint to resource_provider_id. It is not allowed to be null so inventory has to have a resource_provider associated with it now.","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"e6ba83d1d06070391f69ee2554d0939cc21c04f9","unresolved":false,"context_lines":[{"line_number":529,"context_line":"                raise exception.InventoryNotFound(inventory_id)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def update_inventory(self, context, inventory_id, values):"},{"line_number":532,"context_line":"        # NOTE(dtantsur): this can lead to very strange errors"},{"line_number":533,"context_line":"        if \u0027uuid\u0027 in values:"},{"line_number":534,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Inventory.\")"},{"line_number":535,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_2f7da66e","line":532,"updated":"2017-02-12 05:15:49.000000000","message":"This NOTE can be removed *I think*","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"03c2764c1054cfabbab6d9e54ad43dc04259a06f","unresolved":false,"context_lines":[{"line_number":529,"context_line":"                raise exception.InventoryNotFound(inventory_id)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def update_inventory(self, context, inventory_id, values):"},{"line_number":532,"context_line":"        # NOTE(dtantsur): this can lead to very strange errors"},{"line_number":533,"context_line":"        if \u0027uuid\u0027 in values:"},{"line_number":534,"context_line":"            msg \u003d _(\"Cannot overwrite UUID for an existing Inventory.\")"},{"line_number":535,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_9e85e2ae","line":532,"in_reply_to":"fa31d9ce_2f7da66e","updated":"2017-02-12 16:57:54.000000000","message":"Done","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"}],"zun/db/sqlalchemy/models.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"e6ba83d1d06070391f69ee2554d0939cc21c04f9","unresolved":false,"context_lines":[{"line_number":190,"context_line":"class Inventory(Base):"},{"line_number":191,"context_line":"    \"\"\"Represents an inventory. \"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    __tablename__ \u003d \u0027inventory\u0027"},{"line_number":194,"context_line":"    __table_args__ \u003d ("},{"line_number":195,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_inventory0uuid\u0027),"},{"line_number":196,"context_line":"        table_args()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_0fd46245","line":193,"updated":"2017-02-12 05:15:49.000000000","message":"Better to name the table as \"inventories\"?\n\nThe table could be very similar to https://github.com/openstack/nova/blob/b440be9df0b5aacd82a62d2b07befe4fc6c6699b/nova/db/sqlalchemy/models.py#L1499","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"03c2764c1054cfabbab6d9e54ad43dc04259a06f","unresolved":false,"context_lines":[{"line_number":190,"context_line":"class Inventory(Base):"},{"line_number":191,"context_line":"    \"\"\"Represents an inventory. \"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    __tablename__ \u003d \u0027inventory\u0027"},{"line_number":194,"context_line":"    __table_args__ \u003d ("},{"line_number":195,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_inventory0uuid\u0027),"},{"line_number":196,"context_line":"        table_args()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_5eba8a6f","line":193,"in_reply_to":"fa31d9ce_0fd46245","updated":"2017-02-12 16:57:54.000000000","message":"The table name in Nova is \"flavors\", \"quotas\", \"key_pairs\", etc. Therefore, \"inventories\" followed the convention well. In Zun, the table name is \"container\", \"image\", etc. Therefore, we should name it as \"inventory\" . However, if somebody proposed to convert the name to nova-style in a follow-up patch, I won\u0027t have objection for that.","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"e6ba83d1d06070391f69ee2554d0939cc21c04f9","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_inventory0uuid\u0027),"},{"line_number":196,"context_line":"        table_args()"},{"line_number":197,"context_line":"    )"},{"line_number":198,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":199,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":200,"context_line":"    resource_provider_id \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":201,"context_line":"    resource_class_id \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_4fce5ab5","line":198,"updated":"2017-02-12 05:15:49.000000000","message":"nullable\u003dFalse against this row.","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"03c2764c1054cfabbab6d9e54ad43dc04259a06f","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        schema.UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_inventory0uuid\u0027),"},{"line_number":196,"context_line":"        table_args()"},{"line_number":197,"context_line":"    )"},{"line_number":198,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":199,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":200,"context_line":"    resource_provider_id \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":201,"context_line":"    resource_class_id \u003d Column(Integer, nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_7eb10e8f","line":198,"in_reply_to":"fa31d9ce_4fce5ab5","updated":"2017-02-12 16:57:54.000000000","message":"Done","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"e6ba83d1d06070391f69ee2554d0939cc21c04f9","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    step_size \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":207,"context_line":"    allocation_ratio \u003d Column(Float, nullable\u003dFalse)"},{"line_number":208,"context_line":"    is_nested \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":209,"context_line":"    blob \u003d Column(JSONEncodedList)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_6fc5de8c","line":209,"updated":"2017-02-12 05:15:49.000000000","message":"We have to add a orm relationship joining the resource_provider.id with the Inventory.resource_provider_id with the Resource Provider table and define resource_provider_id as the foreign key.","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"03c2764c1054cfabbab6d9e54ad43dc04259a06f","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    step_size \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":207,"context_line":"    allocation_ratio \u003d Column(Float, nullable\u003dFalse)"},{"line_number":208,"context_line":"    is_nested \u003d Column(Integer, nullable\u003dFalse)"},{"line_number":209,"context_line":"    blob \u003d Column(JSONEncodedList)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_9eac0237","line":209,"in_reply_to":"fa31d9ce_6fc5de8c","updated":"2017-02-12 16:57:54.000000000","message":"Done","commit_id":"6ce35c02993b2bf72567b6d5c60df0dbc755a0c7"}]}
