)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7d7d111fe1fc077b3bdc4569db3b7c1973d78dea","unresolved":false,"context_lines":[{"line_number":20,"context_line":"a single way of modeling some resource that is provided by a compute"},{"line_number":21,"context_line":"node, and a single way of comparing a requested amount of something with"},{"line_number":22,"context_line":"the capacity and usage records of the provider of that resource."},{"line_number":23,"context_line":"The next patch in the series adds methods to nova.objects.ComputeNode"},{"line_number":24,"context_line":"that allow its resources (RAM, CPU, LocalDisk, PCI devices, NUMA cells,"},{"line_number":25,"context_line":"etc) to be queried as nova.resource.amounts.UsageSpec objects."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a8c0949_0d4a4680","line":23,"updated":"2014-10-31 14:59:40.000000000","message":"Can\u0027t find it in the series, I expect it to be published soon ?","commit_id":"cb78e9a64e342e362f671291761fb12c3101994d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1a87f3d9fbda67dcf1833ca7a2e5172041a61257","unresolved":false,"context_lines":[{"line_number":25,"context_line":"etc) to be queried as nova.resource.amounts.UsageSpec objects."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I72ccdb8c54438d99f131bfb8402dec372fd1460f"},{"line_number":28,"context_line":"Partially-implements: resource-objects"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_f3fca874","line":28,"updated":"2014-10-23 11:32:31.000000000","message":"I think that this should be:\nPartially-implements blueprint resource-objects","commit_id":"cb78e9a64e342e362f671291761fb12c3101994d"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3d436f1289a6df732128b6dedbca1f4fdb01ecb9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"cells, etc) to be queried as nova.resource.Resource objects."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: I72ccdb8c54438d99f131bfb8402dec372fd1460f"},{"line_number":29,"context_line":"Partially-implements: resource-objects"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"7a740942_c48b2267","line":29,"updated":"2015-12-07 12:31:07.000000000","message":"no link to blueprint here, please add \u0027blueprint\u0027 or \u0027bp\u0027 word","commit_id":"4aa2c373e51861a98210c4b450d311df27392d33"}],"nova/resources.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"81dd3d1248799da0b7c41bc379c77b616c61c7fb","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova import objects"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ResourceType(object):"},{"line_number":22,"context_line":"    \"\"\"Classes of resources that may be consumed by a user.\"\"\""},{"line_number":23,"context_line":"    _AMOUNT_SPEC_CLASS \u003d objects.IntegerAmount"},{"line_number":24,"context_line":"    _USAGE_SPEC_CLASS \u003d objects.IntegerUsage"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_ce754d32","line":21,"updated":"2015-06-10 15:18:18.000000000","message":"Isn\u0027t RAM a resource rather than a resource type?\n\nThis is the type of resources; but that\u0027s what the \"class\" keyword is for.","commit_id":"e068d065ca103efc6600cc265ee9bf68bc3d0491"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9d0bc174c003aad2595f0660fd27ea26e9fc3e07","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova import objects"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ResourceType(object):"},{"line_number":22,"context_line":"    \"\"\"Classes of resources that may be consumed by a user.\"\"\""},{"line_number":23,"context_line":"    _AMOUNT_SPEC_CLASS \u003d objects.IntegerAmount"},{"line_number":24,"context_line":"    _INVENTORY_SPEC_CLASS \u003d objects.IntegerInventory"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_2d933d5d","line":21,"updated":"2015-06-15 08:39:42.000000000","message":"Isn\u0027t RAM a resource rather than a resource type?","commit_id":"d61a5346ed61631f6d8ad3713eda3b086491bb96"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"42341f3f6a22541ec69e20ae75fd84ee3570f21d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova import objects"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ResourceType(object):"},{"line_number":22,"context_line":"    \"\"\"Classes of resources that may be consumed by a user.\"\"\""},{"line_number":23,"context_line":"    _AMOUNT_SPEC_CLASS \u003d objects.IntegerAmount"},{"line_number":24,"context_line":"    _INVENTORY_SPEC_CLASS \u003d objects.IntegerInventory"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_99d88855","line":21,"in_reply_to":"fa32b979_2d933d5d","updated":"2015-06-15 11:25:44.000000000","message":"No, RAM is \"fish\" and \"water\". The resource amount is the \"requested number of fish to eat\" and the \"requested amount of water to drink\". The resource inventory is \"number of fish in the lake and the number that have been caught\" and the \"number of litres of water in the lake and the number of litres that have been drunk\"","commit_id":"d61a5346ed61631f6d8ad3713eda3b086491bb96"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"2d0cf9ac4a89537185ec0978a3b76456ea19f884","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        Since each type of resource may have a different way of comparing"},{"line_number":35,"context_line":"        amounts of the resource, this factory method takes care of passing"},{"line_number":36,"context_line":"        arguments to the appropriate `nova.resources.amounts.AmountSpec`"},{"line_number":37,"context_line":"        class that should be constructed for this resource type."},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        return cls._AMOUNT_CLASS(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_1d60a800","line":36,"updated":"2015-06-16 12:55:35.000000000","message":"nit: says Spec","commit_id":"2a24c595b0b3db09993097301abaae4b7c496ec1"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"2d0cf9ac4a89537185ec0978a3b76456ea19f884","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        Since each type of resource may have a different way of comparing"},{"line_number":46,"context_line":"        amounts of the resource, this factory method takes care of passing"},{"line_number":47,"context_line":"        arguments to the appropriate `nova.resources.amounts.InventorySpec`"},{"line_number":48,"context_line":"        class that should be constructed for this resource type."},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        return cls._INVENTORY_CLASS(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_dd59e05b","line":47,"updated":"2015-06-16 12:55:35.000000000","message":"nit: says Spec","commit_id":"2a24c595b0b3db09993097301abaae4b7c496ec1"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"f8c3e9da606352352f87c5d22aad0e859b8ffb85","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        Since each type of resource may have a different way of comparing"},{"line_number":35,"context_line":"        amounts of the resource, this factory method takes care of passing"},{"line_number":36,"context_line":"        arguments to the appropriate `nova.resources.amounts.AmountSpec`"},{"line_number":37,"context_line":"        class that should be constructed for this resource type."},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        return cls._AMOUNT_CLASS(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa32b979_405ba354","line":36,"updated":"2015-06-16 13:13:27.000000000","message":"nit: says Spec","commit_id":"b971dc3b749e13b8dde01647f8269c8f424d4291"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"f8c3e9da606352352f87c5d22aad0e859b8ffb85","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        Since each type of resource may have a different way of comparing"},{"line_number":46,"context_line":"        amounts of the resource, this factory method takes care of passing"},{"line_number":47,"context_line":"        arguments to the appropriate `nova.resources.amounts.InventorySpec`"},{"line_number":48,"context_line":"        class that should be constructed for this resource type."},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        return cls._INVENTORY_CLASS(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa32b979_e059975b","line":47,"updated":"2015-06-16 13:13:27.000000000","message":"nit: says Spec","commit_id":"b971dc3b749e13b8dde01647f8269c8f424d4291"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c3aa7aa9ba4531b89aca3a5408c89e8c3e24fbba","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    _AMOUNT_CLASS \u003d objects.IntegerAmount"},{"line_number":23,"context_line":"    _INVENTORY_CLASS \u003d objects.IntegerInventory"},{"line_number":24,"context_line":"    _STRING_NAME \u003d \u0027Unknown\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __str__(self):"},{"line_number":27,"context_line":"        return self._STRING_NAME"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_d60cc43d","line":25,"updated":"2015-07-23 21:46:30.000000000","message":"nit : I don\u0027t want to discuss about UML and OO but I just wonder if having an abstract Resource with an implementing IntegerResource where RAM and CPU could be inheriting from wouldn\u0027t it be better, nope ?","commit_id":"12ecade158bdb380ea9bc36adec14dd7cc34cd74"}],"nova/resources/types.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"67c7e8b6019a6911f90b34cdc018b91f4f419bf1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova.resources import amounts"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ResourceType(object):"},{"line_number":22,"context_line":"    \"\"\"Classes of resources that may be consumed by a user.\"\"\""},{"line_number":23,"context_line":"    _AMOUNT_SPEC_CLASS \u003d amounts.IntegerAmount"},{"line_number":24,"context_line":"    _USAGE_SPEC_CLASS \u003d amounts.IntegerUsage"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_ca84f25f","line":21,"updated":"2014-10-17 14:55:59.000000000","message":"Would be great to see how these are used - I assume that they are really meant as a declarative way to get Amounts and Usage... in which case I can see the appeal of this approach and amounts (instance keeps amounts, compute keeps usages - that\u0027s it)\n\nWe would need limits somewhere in the equation tho... (they need to go back and forth between compute hosts and sched ,and even if we do move them to compute hosts as you rightfully suggest several times - we still need them somewhere)","commit_id":"0ead619b068faf52dee8b06b3bb5f429aeecb5c8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"718cc6af405259006c866bf7d4c23b51e7d45d52","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova.resources import amounts"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ResourceType(object):"},{"line_number":22,"context_line":"    \"\"\"Classes of resources that may be consumed by a user.\"\"\""},{"line_number":23,"context_line":"    _AMOUNT_SPEC_CLASS \u003d amounts.IntegerAmount"},{"line_number":24,"context_line":"    _USAGE_SPEC_CLASS \u003d amounts.IntegerUsage"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_402701ca","line":21,"in_reply_to":"baa201ad_ca84f25f","updated":"2014-10-17 16:19:18.000000000","message":"See https://review.openstack.org/#/c/128758/3/nova/objects/instance.py for examples of how they are used. :)","commit_id":"0ead619b068faf52dee8b06b3bb5f429aeecb5c8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7d7d111fe1fc077b3bdc4569db3b7c1973d78dea","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class ResourceType(object):"},{"line_number":22,"context_line":"    \"\"\"Classes of resources that may be consumed by a user.\"\"\""},{"line_number":23,"context_line":"    _AMOUNT_SPEC_CLASS \u003d amounts.IntegerAmount"},{"line_number":24,"context_line":"    _USAGE_SPEC_CLASS \u003d amounts.IntegerUsage"},{"line_number":25,"context_line":"    _STRING_NAME \u003d \u0027Unknown\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8c0949_8d7e36ad","line":24,"updated":"2014-10-31 14:59:40.000000000","message":"Just wondering if it\u0027s worth having an IntegerResourceType having these attributes instead of having these attributes by default, so CPU, RAM etc. could inherit from IntegerResourceType.","commit_id":"cb78e9a64e342e362f671291761fb12c3101994d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1a87f3d9fbda67dcf1833ca7a2e5172041a61257","unresolved":false,"context_lines":[{"line_number":61,"context_line":"class LocalDisk(ResourceType):"},{"line_number":62,"context_line":"    _STRING_NAME \u003d \u0027LocalDisk\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class NUMATopology(ResourceType):"},{"line_number":66,"context_line":"    _STRING_NAME \u003d \u0027NUMATopology\u0027"},{"line_number":67,"context_line":"    _AMOUNT_SPEC_CLASS \u003d amounts.NUMAAmount"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_b314e0a0","line":64,"updated":"2014-10-23 11:32:31.000000000","message":"Do we also need to have PCI support here?","commit_id":"cb78e9a64e342e362f671291761fb12c3101994d"}],"nova/tests/unit/test_resources.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"2d0cf9ac4a89537185ec0978a3b76456ea19f884","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from nova import test"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class TestResourceTypes(test.NoDBTestCase):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def test_basic_types(self):"},{"line_number":21,"context_line":"        for res_type in (resources.RAM, resources.CPU, resources.LocalDisk):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa32b979_3d224cba","line":18,"updated":"2015-06-16 12:55:35.000000000","message":"This should be TestResource now","commit_id":"2a24c595b0b3db09993097301abaae4b7c496ec1"}]}
