)]}'
{"nova/objects/virtual_interface.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"1f01d84d9783f4faebeb4241d70949f75393ab0b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self._from_db_object(context, self, db_vif)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @base.remotable_classmethod"},{"line_number":76,"context_line":"    def delete_by_instance_uuid(cls, context, instance_uuid):"},{"line_number":77,"context_line":"        db.virtual_interface_delete_by_instance(context, instance_uuid)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FNoQ%3D","line":76,"updated":"2014-01-16 10:23:34.000000000","message":"I am not really sure about this one.\n\nMostly we use it as a normal (not classmethod) method, and call it destroy().","commit_id":"38eb9b7e1b6a1b7af5cb477b6ef0d9effb4e3873"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a7b8362d2988e99ba7613c5c2ea2422b8d4b0927","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        self._from_db_object(context, self, db_vif)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @base.remotable_classmethod"},{"line_number":76,"context_line":"    def delete_by_instance_uuid(cls, context, instance_uuid):"},{"line_number":77,"context_line":"        db.virtual_interface_delete_by_instance(context, instance_uuid)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FLxc%3D","line":76,"in_reply_to":"AAAAUH%2F%2FNoQ%3D","updated":"2014-01-16 16:56:04.000000000","message":"This method is awkward, but I opted for not worrying about changing behavior right now.\n\nThe code that uses this doesn\u0027t have a reference to the vif.  It just has the instance  UUID.  It deletes *all* vifs associated with that instance.","commit_id":"38eb9b7e1b6a1b7af5cb477b6ef0d9effb4e3873"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4a3e6588c7dfe2b26b596b36f1b75aea892779bb","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027address\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":28,"context_line":"        \u0027network_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":29,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":30,"context_line":"        \u0027uuid\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":31,"context_line":"    }"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FLN0%3D","line":30,"updated":"2014-01-16 18:22:00.000000000","message":"I don\u0027t think that id, network_id, address, and uuid are actually in need of being nullable, are they? Our DB models are pretty messy in that nearly everything is nullable, even if it doesn\u0027t need to be. We\u0027ve been trying to look at these critically and make things non-null that make sense to be where possible. It looks to me that VIFs get created with a network_id, uuid, and mac (and id gets assigned on create)...","commit_id":"6118be9fd058dc91f42057153f61c5126013be8b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"786332bd749587ebe8e8d91833ba88f463ffa6d5","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027address\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":28,"context_line":"        \u0027network_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":29,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":30,"context_line":"        \u0027uuid\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":31,"context_line":"    }"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FKYw%3D","line":30,"in_reply_to":"AAAAUH%2F%2FLN0%3D","updated":"2014-01-16 20:46:04.000000000","message":"Ok, fixed.\n\nThere is a network manager test case that specifically tests created a vif without a mac address, though, so that has to still be nullable.","commit_id":"6118be9fd058dc91f42057153f61c5126013be8b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"eb86d29d51f64cb296b83825164cdf692952540b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027id\u0027: fields.IntegerField(),"},{"line_number":27,"context_line":"        \u0027address\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":28,"context_line":"        \u0027network_id\u0027: fields.IntegerField(),"},{"line_number":29,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(),"},{"line_number":30,"context_line":"        \u0027uuid\u0027: fields.StringField(),"},{"line_number":31,"context_line":"    }"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FGsc%3D","line":29,"updated":"2014-01-17 11:55:09.000000000","message":"please use fields.UUIDField(),","commit_id":"a7bec901dcb2c56abfbde5b222d01739b6b6b8d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"eb86d29d51f64cb296b83825164cdf692952540b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027address\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":28,"context_line":"        \u0027network_id\u0027: fields.IntegerField(),"},{"line_number":29,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(),"},{"line_number":30,"context_line":"        \u0027uuid\u0027: fields.StringField(),"},{"line_number":31,"context_line":"    }"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FGsU%3D","line":30,"updated":"2014-01-17 11:55:09.000000000","message":"ditto","commit_id":"a7bec901dcb2c56abfbde5b222d01739b6b6b8d7"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"a0d8c99223ad40b4d56fea85943acdc09e9c62b7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @base.remotable_classmethod"},{"line_number":42,"context_line":"    def get_by_id(cls, context, vif_id):"},{"line_number":43,"context_line":"        db_vif \u003d db.virtual_interface_get(context, vif_id)"},{"line_number":44,"context_line":"        if db_vif:"},{"line_number":45,"context_line":"            return cls._from_db_object(context, cls(), db_vif)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    @base.remotable_classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FG48%3D","line":44,"updated":"2014-01-17 11:26:39.000000000","message":"I noticed this while reviewing https://review.openstack.org/#/c/66650/ - most of our objects code will raise (db method will raise SmthNotFound) if there is nothing in the db.\n\nI am not sure weather returning None is better or worse - but we should be consistent at lease (/me goes to fix his bdm patch :))\n\nI slightly prefer raising to None. But I do realize that this will require more changes than we want in the network code, So I\u0027d +2 this if we also have a targeted bug to clean it up, otherwise we\u0027ll have the same mess that is the db api.","commit_id":"a7bec901dcb2c56abfbde5b222d01739b6b6b8d7"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"f74a15bd7bb8f9eefd922c47136a2a0077246680","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027address\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":28,"context_line":"        \u0027network_id\u0027: fields.IntegerField(),"},{"line_number":29,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(),"},{"line_number":30,"context_line":"        \u0027uuid\u0027: fields.StringField(),"},{"line_number":31,"context_line":"    }"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2B%2Fy0%3D","line":30,"updated":"2014-01-19 19:11:10.000000000","message":"UUIDField() for these last 2... as gary pointed out before.","commit_id":"1452f1a2f9902c807918c124c45dd3503cdcb15b"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"af1975dd53dd426c53394e70535e784865807f59","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027address\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":28,"context_line":"        \u0027network_id\u0027: fields.IntegerField(),"},{"line_number":29,"context_line":"        \u0027instance_uuid\u0027: fields.StringField(),"},{"line_number":30,"context_line":"        \u0027uuid\u0027: fields.StringField(),"},{"line_number":31,"context_line":"    }"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2B8Qg%3D","line":30,"in_reply_to":"AAAAUH%2F%2B%2Fy0%3D","updated":"2014-01-20 15:20:08.000000000","message":"Done","commit_id":"1452f1a2f9902c807918c124c45dd3503cdcb15b"}],"nova/tests/objects/test_virtual_interface.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"1f01d84d9783f4faebeb4241d70949f75393ab0b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        with mock.patch.object(db, \u0027virtual_interface_get_by_uuid\u0027) as get:"},{"line_number":49,"context_line":"            get.return_value \u003d fake_vif"},{"line_number":50,"context_line":"            vif \u003d vif_obj.VirtualInterface.get_by_uuid(self.context,"},{"line_number":51,"context_line":"                                                       \u0027fake-uuid-2\u0027)"},{"line_number":52,"context_line":"            self._compare(self, fake_vif, vif)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_by_address(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FNn4%3D","line":51,"updated":"2014-01-16 10:23:34.000000000","message":"This indent is weird?","commit_id":"38eb9b7e1b6a1b7af5cb477b6ef0d9effb4e3873"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"a7b8362d2988e99ba7613c5c2ea2422b8d4b0927","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        with mock.patch.object(db, \u0027virtual_interface_get_by_uuid\u0027) as get:"},{"line_number":49,"context_line":"            get.return_value \u003d fake_vif"},{"line_number":50,"context_line":"            vif \u003d vif_obj.VirtualInterface.get_by_uuid(self.context,"},{"line_number":51,"context_line":"                                                       \u0027fake-uuid-2\u0027)"},{"line_number":52,"context_line":"            self._compare(self, fake_vif, vif)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_by_address(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FLxs%3D","line":51,"in_reply_to":"AAAAUH%2F%2FNn4%3D","updated":"2014-01-16 16:56:04.000000000","message":"what\u0027s weird about it?  Isn\u0027t it common to align stuff with the line above?","commit_id":"38eb9b7e1b6a1b7af5cb477b6ef0d9effb4e3873"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"1f01d84d9783f4faebeb4241d70949f75393ab0b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        with mock.patch.object(db, \u0027virtual_interface_get_by_address\u0027) as get:"},{"line_number":56,"context_line":"            get.return_value \u003d fake_vif"},{"line_number":57,"context_line":"            vif \u003d vif_obj.VirtualInterface.get_by_address(self.context,"},{"line_number":58,"context_line":"                                                          \u002700:00:00:00:00:00\u0027)"},{"line_number":59,"context_line":"            self._compare(self, fake_vif, vif)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_get_by_instance_and_network(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FNn0%3D","line":58,"updated":"2014-01-16 10:23:34.000000000","message":"Same here.","commit_id":"38eb9b7e1b6a1b7af5cb477b6ef0d9effb4e3873"}]}
