)]}'
{"nova/objects/resource_class.py":[{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"868fcdb2f2f99c3cab05b42786be23b95102a1fe","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":21,"context_line":"class ResourceClass(base.NovaTimestampObject, base.NovaObject,"},{"line_number":22,"context_line":"                    base.NovaObjectDictCompat):"},{"line_number":23,"context_line":"    \"\"\"A class of quantitative, consumable resource.\"\"\""},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_27d3b4d6","line":22,"updated":"2016-01-06 20:20:42.000000000","message":"Instead of adding to the DictCompat tech debt, you should make this class without using it. (I\u0027ll be happier if you go without it :) bp rm-object-dict-compat)","commit_id":"d7e4db38d9c75b16808fee36b6a56124f0273c0b"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"1a14705fb002a9fb15f9f31bf6c46b51139a025e","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"},{"line_number":34,"context_line":"    @db_api.api_context_manager.writer"},{"line_number":35,"context_line":"    def _create_in_db(context, updates):"},{"line_number":36,"context_line":"        db_resource_class \u003d api_models.ResourceClass()"},{"line_number":37,"context_line":"        db_resource_class.update(updates)"},{"line_number":38,"context_line":"        db_resource_class.save(context.session)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_9a29a48c","line":35,"updated":"2016-01-06 15:52:31.000000000","message":"This should probably exist in nova.db.api instead of here. That way the object isn\u0027t tied to sqlalchemy","commit_id":"d7e4db38d9c75b16808fee36b6a56124f0273c0b"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"1a14705fb002a9fb15f9f31bf6c46b51139a025e","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @staticmethod"},{"line_number":50,"context_line":"    def _get_by_id_from_db(context, id):"},{"line_number":51,"context_line":"        session \u003d db_api.get_api_session()"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        with session.begin():"},{"line_number":54,"context_line":"            db_resource_class \u003d session.query("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_1a3e14c1","line":51,"updated":"2016-01-06 15:52:31.000000000","message":"same here","commit_id":"d7e4db38d9c75b16808fee36b6a56124f0273c0b"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"1a14705fb002a9fb15f9f31bf6c46b51139a025e","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @staticmethod"},{"line_number":61,"context_line":"    def _get_by_name_from_db(context, name):"},{"line_number":62,"context_line":"        session \u003d db_api.get_api_session()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        with session.begin():"},{"line_number":65,"context_line":"            db_resource_class \u003d session.query("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_fa2ea08a","line":62,"updated":"2016-01-06 15:52:31.000000000","message":"and here","commit_id":"d7e4db38d9c75b16808fee36b6a56124f0273c0b"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"1a14705fb002a9fb15f9f31bf6c46b51139a025e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    @staticmethod"},{"line_number":72,"context_line":"    @db_api.api_context_manager.writer"},{"line_number":73,"context_line":"    def _save_in_db(context, id, updates):"},{"line_number":74,"context_line":"        db_resource_class \u003d ResourceClass._get_by_id_from_db(context, id)"},{"line_number":75,"context_line":"        db_resource_class.update(updates)"},{"line_number":76,"context_line":"        db_resource_class.save(context.session)"},{"line_number":77,"context_line":"        return db_resource_class"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_7a7070a4","line":74,"updated":"2016-01-06 15:52:31.000000000","message":"and here","commit_id":"d7e4db38d9c75b16808fee36b6a56124f0273c0b"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"1a14705fb002a9fb15f9f31bf6c46b51139a025e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            raise exception.ObjectActionError(action\u003d\u0027create\u0027,"},{"line_number":83,"context_line":"                                              reason\u003d\u0027already created\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        db_resource_class \u003d self._create_in_db(self._context,"},{"line_number":86,"context_line":"                                               self.obj_get_changes())"},{"line_number":87,"context_line":"        self._from_db_object(self._context, self, db_resource_class)"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_fa5c601a","line":85,"updated":"2016-01-06 15:52:31.000000000","message":"Then these functions will just call the nova db api","commit_id":"d7e4db38d9c75b16808fee36b6a56124f0273c0b"}]}
