)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"22622b9218672975d76691b51c443135907cef2d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This turns the Usage and UsageList classes into classical objects."},{"line_number":10,"context_line":"The main point of interest here is the creation of a _set_objects"},{"line_number":11,"context_line":"method to replace base.obj_make_list. It doesn\u0027t essentially the"},{"line_number":12,"context_line":"same thing: creates instances of the contained thing (Usage) on"},{"line_number":13,"context_line":"the UsageList."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_e70b148b","line":11,"range":{"start_line":11,"start_character":41,"end_line":11,"end_character":48},"updated":"2019-02-13 23:30:57.000000000","message":"does?","commit_id":"ee971c9c0f6d5d22c75e1821fad9f3e1b908c7ce"}],"placement/objects/resource_provider.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"22622b9218672975d76691b51c443135907cef2d","unresolved":false,"context_lines":[{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"class UsageList(object):"},{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"    def __init__(self, context, objects\u003dNone):"},{"line_number":2331,"context_line":"        self.objects \u003d objects or []"},{"line_number":2332,"context_line":""},{"line_number":2333,"context_line":"    def __len__(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_a7366c50","line":2330,"range":{"start_line":2330,"start_character":23,"end_line":2330,"end_character":30},"updated":"2019-02-13 23:30:57.000000000","message":"not used, so couldn\u0027t you get rid of it here...","commit_id":"ee971c9c0f6d5d22c75e1821fad9f3e1b908c7ce"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c7eb94dd581f4ae30549cff6581a46c73e600570","unresolved":false,"context_lines":[{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"class UsageList(object):"},{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"    def __init__(self, context, objects\u003dNone):"},{"line_number":2331,"context_line":"        self.objects \u003d objects or []"},{"line_number":2332,"context_line":""},{"line_number":2333,"context_line":"    def __len__(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_f669838b","line":2330,"range":{"start_line":2330,"start_character":23,"end_line":2330,"end_character":30},"in_reply_to":"9fdfeff1_a7366c50","updated":"2019-02-18 13:27:05.000000000","message":"yeah, I think I put it in there to get something passing, but yes, it should come out.","commit_id":"ee971c9c0f6d5d22c75e1821fad9f3e1b908c7ce"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"22622b9218672975d76691b51c443135907cef2d","unresolved":false,"context_lines":[{"line_number":2384,"context_line":"    @classmethod"},{"line_number":2385,"context_line":"    def get_all_by_resource_provider_uuid(cls, context, rp_uuid):"},{"line_number":2386,"context_line":"        usage_list \u003d cls._get_all_by_resource_provider_uuid(context, rp_uuid)"},{"line_number":2387,"context_line":"        return cls._set_objects(cls(context), Usage, usage_list)"},{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"    @classmethod"},{"line_number":2390,"context_line":"    def get_all_by_project_user(cls, context, project_id, user_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_0745f8b3","line":2387,"range":{"start_line":2387,"start_character":36,"end_line":2387,"end_character":43},"updated":"2019-02-13 23:30:57.000000000","message":"...and here","commit_id":"ee971c9c0f6d5d22c75e1821fad9f3e1b908c7ce"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"22622b9218672975d76691b51c443135907cef2d","unresolved":false,"context_lines":[{"line_number":2390,"context_line":"    def get_all_by_project_user(cls, context, project_id, user_id\u003dNone):"},{"line_number":2391,"context_line":"        usage_list \u003d cls._get_all_by_project_user(context, project_id,"},{"line_number":2392,"context_line":"                                                  user_id\u003duser_id)"},{"line_number":2393,"context_line":"        return cls._set_objects(cls(context), Usage, usage_list)"},{"line_number":2394,"context_line":""},{"line_number":2395,"context_line":"    def __repr__(self):"},{"line_number":2396,"context_line":"        strings \u003d [repr(x) for x in self.objects]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_c714d0a2","line":2393,"range":{"start_line":2393,"start_character":36,"end_line":2393,"end_character":43},"updated":"2019-02-13 23:30:57.000000000","message":"...and here?","commit_id":"ee971c9c0f6d5d22c75e1821fad9f3e1b908c7ce"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"68de7d1fdaa5511058d33fed4b853d3887f43658","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"    def __init__(self, resource_class\u003dNone, resource_class_id\u003dNone, usage\u003d0):"},{"line_number":2308,"context_line":"        self.resource_class \u003d resource_class"},{"line_number":2309,"context_line":"        if resource_class_id is not None:"},{"line_number":2310,"context_line":"            self.resource_class \u003d _RC_CACHE.string_from_id(resource_class_id)"},{"line_number":2311,"context_line":"        self.usage \u003d usage"},{"line_number":2312,"context_line":""},{"line_number":2313,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_7dc20ceb","line":2310,"updated":"2019-02-18 13:19:11.000000000","message":"what about:\n\n if resource_class is not None and resource_class_id is None:\n     self.resource_class_id \u003d _RC_CACHE.id_from_string(resource_class)","commit_id":"42715f69cec1e394121e38a9519c1d6b901c569b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c7eb94dd581f4ae30549cff6581a46c73e600570","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"    def __init__(self, resource_class\u003dNone, resource_class_id\u003dNone, usage\u003d0):"},{"line_number":2308,"context_line":"        self.resource_class \u003d resource_class"},{"line_number":2309,"context_line":"        if resource_class_id is not None:"},{"line_number":2310,"context_line":"            self.resource_class \u003d _RC_CACHE.string_from_id(resource_class_id)"},{"line_number":2311,"context_line":"        self.usage \u003d usage"},{"line_number":2312,"context_line":""},{"line_number":2313,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_9d049019","line":2310,"in_reply_to":"9fdfeff1_7dc20ceb","updated":"2019-02-18 13:27:05.000000000","message":"Do we need a self.resource_class_id? This object doesn\u0027t get persisted, it\u0027s used in various presentational ways, and (thus far) all those presentations are of name.\n\nI did it this way for the sake of the constructor: if something provides a resource_class_id, presumably that ought to have precedence, whatever the state of resource_class_name.\n\nI could change it to:\n\n   if resource_class is None and resource_class_id is not None:\n      self.resource_class ...\n\nbut that would only allow the id to matter is resource_class is not set. Is that what we want? I don\u0027t really know.","commit_id":"42715f69cec1e394121e38a9519c1d6b901c569b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"362a8cacc2d546fb92031490e1a5f030b1e2f426","unresolved":false,"context_lines":[{"line_number":2307,"context_line":"    def __init__(self, resource_class\u003dNone, resource_class_id\u003dNone, usage\u003d0):"},{"line_number":2308,"context_line":"        self.resource_class \u003d resource_class"},{"line_number":2309,"context_line":"        if resource_class_id is not None:"},{"line_number":2310,"context_line":"            self.resource_class \u003d _RC_CACHE.string_from_id(resource_class_id)"},{"line_number":2311,"context_line":"        self.usage \u003d usage"},{"line_number":2312,"context_line":""},{"line_number":2313,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d874666a","line":2310,"in_reply_to":"9fdfeff1_9d049019","updated":"2019-02-18 13:37:07.000000000","message":"yeah, not sure... if we don\u0027t use this object in any non-presentation ways, I suppose this is fine as-is. If we *do* however -- for instance, in calculating things like allocation candidates -- then that\u0027s a different story. I\u0027m honestly not sure if we use this object in those calculations or whether we track usage counts in a tuple or other way.","commit_id":"42715f69cec1e394121e38a9519c1d6b901c569b"}]}
