)]}'
{"nova/placement/resource.py":[{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"4c64c4a9460a427924fb8af6bac6da39d5ea2765","unresolved":false,"context_lines":[{"line_number":15,"context_line":"resources of the same type."},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class RequestedAmount(object):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    \"\"\""},{"line_number":21,"context_line":"    Interface class that serves to provide a consistent way of comparing"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_244017a2","line":18,"updated":"2014-08-12 22:36:16.000000000","message":"Why don\u0027t it simply be request? Amount to me means like VCPU/memory, which is sub/add, while request is more generic. Of course, I\u0027m not native English speaker.","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1bfce1317f5428a483228ec3beb2a8a8bdb5cb07","unresolved":false,"context_lines":[{"line_number":15,"context_line":"resources of the same type."},{"line_number":16,"context_line":"\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class RequestedAmount(object):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    \"\"\""},{"line_number":21,"context_line":"    Interface class that serves to provide a consistent way of comparing"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_b0828150","line":18,"in_reply_to":"baada198_244017a2","updated":"2014-08-14 18:23:46.000000000","message":"See below. NUMA topology and other complex resources cannot be compared using simple integer subtraction.","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"4c64c4a9460a427924fb8af6bac6da39d5ea2765","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    particular type of resource on a compute node."},{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def consume(self, amount_spec):"},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        Consume the supplied requested amount of resources."},{"line_number":62,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_445a6b86","line":59,"updated":"2014-08-12 22:36:16.000000000","message":"What\u0027s the difference of consume and claim?","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1bfce1317f5428a483228ec3beb2a8a8bdb5cb07","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    particular type of resource on a compute node."},{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def consume(self, amount_spec):"},{"line_number":60,"context_line":"        \"\"\""},{"line_number":61,"context_line":"        Consume the supplied requested amount of resources."},{"line_number":62,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_f0ca39a0","line":59,"in_reply_to":"baada198_445a6b86","updated":"2014-08-14 18:23:46.000000000","message":"consume() is about adjusting the amount of used resources. The Claim object is about the process of changing the stored view of usage amounts in the database using a controlled obstruction-free process.","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"4c64c4a9460a427924fb8af6bac6da39d5ea2765","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        return _STRING_NAME"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    @classmethod"},{"line_number":126,"context_line":"    def make_min_request_spec(cls, *args, **kwargs):"},{"line_number":127,"context_line":"        return cls._SPEC_CLASS(1)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_04df93d8","line":126,"updated":"2014-08-12 22:36:16.000000000","message":"Why do we need this? I think we need a interface to check if a resource request is valid, like 257 MB memory is usually not so good etc, but why we have the generic min request spec?","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1bfce1317f5428a483228ec3beb2a8a8bdb5cb07","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        return _STRING_NAME"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    @classmethod"},{"line_number":126,"context_line":"    def make_min_request_spec(cls, *args, **kwargs):"},{"line_number":127,"context_line":"        return cls._SPEC_CLASS(1)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_30203149","line":126,"in_reply_to":"baada198_04df93d8","updated":"2014-08-14 18:23:46.000000000","message":"See usage of this in how the resource amounts are compared here:\n\nhttps://review.openstack.org/#/c/103598/4/nova/placement/resource_tracker.py\n\nlines 131-139. It is needed because resource types like NUMA topology don\u0027t have a simple integer-based way of describing the minimum resource amount that can be served by a resource provider.","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"4c64c4a9460a427924fb8af6bac6da39d5ea2765","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    _STRING_NAME \u003d \u0027LocalDisk\u0027"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class PCINicPort(ResourceType):"},{"line_number":156,"context_line":"    _STRING_NAME \u003d \u0027PCINicPort\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_84e2c39a","line":155,"updated":"2014-08-12 22:36:16.000000000","message":"I don\u0027t think PCI NIC is too much different with generic PCI devices from resource point of view? Or you are talking about like the upstream switch port?","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1bfce1317f5428a483228ec3beb2a8a8bdb5cb07","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    _STRING_NAME \u003d \u0027LocalDisk\u0027"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class PCINicPort(ResourceType):"},{"line_number":156,"context_line":"    _STRING_NAME \u003d \u0027PCINicPort\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ac7a964_307cb120","line":155,"in_reply_to":"baada198_84e2c39a","updated":"2014-08-14 18:23:46.000000000","message":"PCINicPort \u003d\u003d Virtual Function on an SR-IOV Physical Function.\n\nAnd no, it\u0027s not tracked any differently from number of CPUs or amount of RAM.","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"}],"nova/placement/resource_tracker.py":[{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"4c64c4a9460a427924fb8af6bac6da39d5ea2765","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                raise ValueError"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    def __enter__(self):"},{"line_number":214,"context_line":"        return self"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def __exit__(self, exc_type, exc_val, exc_tb):"},{"line_number":217,"context_line":"        if exc_type is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_84672324","line":214,"updated":"2014-08-12 22:36:16.000000000","message":"I\u0027d suggest to discard the context manager, we should keep the claim object as a purely object, and we can have a wrapper in the caller (maybe conductor) to do the context manager effort.","commit_id":"8db7b401cca2e94683324844893a0a59b306756c"}]}
