)]}'
{"nova/db/sqlalchemy/migrate_repo/versions/313_add_parent_id_column.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"85ee4b05b81ae6da51656391c59d2e0b108d3489","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    pci_devices \u003d Table(\u0027pci_devices\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":"    shadow_pci_devices \u003d Table(\u0027shadow_pci_devices\u0027, meta, autoload\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    ukey \u003d UniqueConstraint(\u0027address\u0027, table\u003dpci_devices,"},{"line_number":30,"context_line":"                            name\u003d\"uniq_pci_devices0address\")"},{"line_number":31,"context_line":"    ukey.create()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    parent_addr \u003d Column(\u0027parent_addr\u0027, String(12),"},{"line_number":34,"context_line":"                       ForeignKey(\u0027pci_devices.address\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_2851cdd8","line":31,"range":{"start_line":29,"start_character":4,"end_line":31,"end_character":17},"updated":"2015-11-25 15:36:50.000000000","message":"See my comments on models.py, but regardless of that I am not sure we are allowed to do ALTER table kind of things anymore - would check with dansmith.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"88151bde3ed233a3630916acba4207ae459db27a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                         pci_devices.c.parent_addr,"},{"line_number":39,"context_line":"                         pci_devices.c.deleted)"},{"line_number":40,"context_line":"    parent_index.create(migrate_engine)"},{"line_number":41,"context_line":"    parent_index \u003d Index("},{"line_number":42,"context_line":"                   \u0027shadow_ix_pci_devices_compute_node_id_parent_addr_deleted\u0027,"},{"line_number":43,"context_line":"                         shadow_pci_devices.c.compute_node_id,"},{"line_number":44,"context_line":"                         shadow_pci_devices.c.parent_addr,"},{"line_number":45,"context_line":"                         shadow_pci_devices.c.deleted)"},{"line_number":46,"context_line":"    parent_index.create(migrate_engine)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a7b0d38_be0c133c","line":46,"range":{"start_line":41,"start_character":3,"end_line":46,"end_character":39},"updated":"2015-12-24 12:13:44.000000000","message":"We don\u0027t need an index on the shadow table.","commit_id":"fe020b005c3c9140b150c2cfbdc7b439a9919414"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"85ee4b05b81ae6da51656391c59d2e0b108d3489","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"    \"\"\"Represents a PCI host device that can be passed through to instances."},{"line_number":1367,"context_line":"    \"\"\""},{"line_number":1368,"context_line":"    __tablename__ \u003d \u0027pci_devices\u0027"},{"line_number":1369,"context_line":"    __table_args__ \u003d ("},{"line_number":1370,"context_line":"        Index(\u0027ix_pci_devices_compute_node_id_deleted\u0027,"},{"line_number":1371,"context_line":"              \u0027compute_node_id\u0027, \u0027deleted\u0027),"},{"line_number":1372,"context_line":"        Index(\u0027ix_pci_devices_instance_uuid_deleted\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_e204467f","line":1369,"range":{"start_line":1369,"start_character":4,"end_line":1369,"end_character":18},"updated":"2015-11-25 15:36:50.000000000","message":"So do we want to add a new unique constraint here as well?","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"85ee4b05b81ae6da51656391c59d2e0b108d3489","unresolved":false,"context_lines":[{"line_number":1371,"context_line":"              \u0027compute_node_id\u0027, \u0027deleted\u0027),"},{"line_number":1372,"context_line":"        Index(\u0027ix_pci_devices_instance_uuid_deleted\u0027,"},{"line_number":1373,"context_line":"              \u0027instance_uuid\u0027, \u0027deleted\u0027),"},{"line_number":1374,"context_line":"        schema.UniqueConstraint("},{"line_number":1375,"context_line":"            \"compute_node_id\", \"address\", \"deleted\","},{"line_number":1376,"context_line":"            name\u003d\"uniq_pci_devices0compute_node_id0address0deleted\")"},{"line_number":1377,"context_line":"    )"},{"line_number":1378,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":1379,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_0235caf5","line":1376,"range":{"start_line":1374,"start_character":8,"end_line":1376,"end_character":68},"updated":"2015-11-25 15:36:50.000000000","message":"and doesn\u0027t the newly added unique constraint clash with this one? it\u0027s more restrictive than this and will likely break for a number of deployments due to our \"never delete anything policy\"\n\nActually I believe that having it part of a unique constraint makes sure that it\u0027s indexed [1] so no need for the new constraint I believe. \n\n[1] https://dev.mysql.com/doc/refman/5.7/en/constraint-primary-key.html","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"03461de900bd10b39b20a163e6fd24a0a481d722","unresolved":false,"context_lines":[{"line_number":1373,"context_line":"              \u0027instance_uuid\u0027, \u0027deleted\u0027),"},{"line_number":1374,"context_line":"        schema.UniqueConstraint("},{"line_number":1375,"context_line":"            \"compute_node_id\", \"address\", \"deleted\","},{"line_number":1376,"context_line":"            name\u003d\"uniq_pci_devices0compute_node_id0address0deleted\")"},{"line_number":1377,"context_line":"    )"},{"line_number":1378,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":1379,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_05894f26","line":1376,"in_reply_to":"9a8ffd7b_0235caf5","updated":"2015-11-25 16:30:36.000000000","message":"agree, I\u0027ll add.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"85ee4b05b81ae6da51656391c59d2e0b108d3489","unresolved":false,"context_lines":[{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"    numa_node \u003d Column(Integer, nullable\u003dTrue)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_6d228703","line":1408,"range":{"start_line":1406,"start_character":3,"end_line":1408,"end_character":65},"updated":"2015-11-25 15:36:50.000000000","message":"I have to look at further patches more closely to see why we would want to query this by address primarily. I took a stab at this patch and I seem to remember using the id for the foreign key. That seems like a much cleaner DB practice.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"44bfd24733f0f775573484904d6eee7279e77c17","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_c4e9fe1b","line":1408,"in_reply_to":"7a740942_0ed78024","updated":"2015-12-10 21:36:47.000000000","message":"@Sahid - not really. We can insert them in arbitrary order if the FK is NOT the parent address but a parent_id field. If we get a VF check for a PF (select by address - already indexed) if we don\u0027t have a PF - don\u0027t set the parent_id but set the parent_address field always (we always have it).\n\nAny time we see a PF - SELECT all the VFs who have this parent address (we will need an index on the new field - should be cheap to create) and update them.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"42eb8f30d2d7563441fcad34e5102711617b337c","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_c051bc37","line":1408,"in_reply_to":"7a740942_aa0c94ed","updated":"2015-12-07 17:26:29.000000000","message":"FWIW address is already indexed as it\u0027s a part of UC.\n\nMy point was that having an id be the other side of the FK is slightly more generic and that in case we do want to enforce FK constraints (no reason why we shouldn\u0027t) we can\u0027t make address a FK because the code is structured in a way that we\u0027ll need to insert children before the parent.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"4dbdb696af5f8739226901af6f75c89e72427ba5","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_0ed78024","line":1408,"in_reply_to":"7a740942_b6d93059","updated":"2015-12-09 14:26:58.000000000","message":"I understand better problem from Vladik, if we use ID, so an extra work will be necessary to order PFs, VFs before to insert them in database.\n\nSo first we should to retrieve all devices with a null parent_id, then we should to insert new PFs firstly and keep a mapping of all {PF.address: PF.id} to then insert VFs with parent_id well defined according to their parent addresses (which is returned by libvirt)\n\nFor sure it\u0027s more work than just use parent_addr and let database doing work of relationship of the cost to create new index.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"cf649d6715bce6ea96201c67367ea6680d35bfd4","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_b6d93059","line":1408,"in_reply_to":"7a740942_bf9831c1","updated":"2015-12-08 11:33:48.000000000","message":"yep agreed with sahid here - actually if you just add a parent foreign key, innodb automatically indexes other side of the FK relationship (it\u0027s a cheap secondary index) so using\n\nparent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[id])\n\nwould not need to explicitly add an index at all I think.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"b2233af9b564b49cb4cece11bccfe213f2589a4b","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_bf9831c1","line":1408,"in_reply_to":"7a740942_c051bc37","updated":"2015-12-08 08:01:10.000000000","message":"Hum... yes and no, cardinality of {compute_node_id, address, deleted} is indexed and it\u0027s probably constraints you will add to your qurery.\n\n\u0027address\u0027 is not indexed and you need a new one if you keep code like it is now, since relationship will scan all PCIDevice by address only:\n\n  parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])\n\nSo yes, if you use ID it\u0027s not needed to add new index for address. Nikola\u0027s way is probably better.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"7f8bec6e15cefd90a242c09ac536dacae479cec7","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_f103fbbc","line":1408,"in_reply_to":"9a8ffd7b_5822cdba","updated":"2015-11-30 18:36:55.000000000","message":"\u003e I don\u0027t see a way to link the two objects by id, since we don\u0027t have the id of the parent when we are creating the object... we really only have the parent address..\n\nHmm that seems to be correct, however I am not sure that we can use the ForeignKey constraint in that case, as it will be checked for integrity and we will fail to insert a VF before we have it\u0027s PF. \n\nHaving a FK on the id is better for querying once we have the stuff in the DB, and we need a way to store the parent address in case we haven\u0027t added the parent yet.\n\nSo what I propose as design here is store parent address for the case when we are just adding newly discovered devices as we don\u0027t know the order in which we will see them, and then have a FK field that references the parent by it\u0027s ID for ease of querying during claims, and to have a proper FK.","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3facfb204556356de052b8dc21f9307633c7caed","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_aa0c94ed","line":1408,"in_reply_to":"9a8ffd7b_5822cdba","updated":"2015-12-07 15:54:18.000000000","message":"I do not see difference using parent id or parent addr. in all cases we will need an extra index for \u0027address\u0027 and create an other one for parent_id|addr.\n\nSo address needs to be indexed to scan by address at least.\n\nso if you use ID way:\n  parent_id needs to be indexed, id is already indexed\n\nif you use address\n  parent_addr needs to be indexed, address is not yet indexed but will be in all cases\n\n\n-1 because you really have to add an index for \u0027address\u0027 field","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"03461de900bd10b39b20a163e6fd24a0a481d722","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_e2b3e1e7","line":1408,"in_reply_to":"9a8ffd7b_6d228703","updated":"2015-11-25 16:30:36.000000000","message":"Well, I primarily need it for the claims and allocations. [1]\nProblem is that I won\u0027t ever have the id of the parent/dependant\nThe only information we have is the address. \n\n[1] https://review.openstack.org/#/c/249018/","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"19341241cdb3f7a4e89c92ecffb6f8c582d62ed7","unresolved":false,"context_lines":[{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), ForeignKey(\u0027pci_devices.address\u0027),"},{"line_number":1407,"context_line":"                         nullable\u003dTrue)"},{"line_number":1408,"context_line":"    parent \u003d orm.relationship(\u0027PciDevice\u0027, remote_side\u003d[address])"},{"line_number":1409,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1410,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1411,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_5822cdba","line":1408,"in_reply_to":"9a8ffd7b_e2b3e1e7","updated":"2015-11-25 21:33:45.000000000","message":"I was thinking about your comment again and it still goes completely over my head :)\nThe pattern I am following here is based on the self reference ref. in [1] \nso afaiu, when creating the parent reference pci_devices.address becomes the remote side and the parent_addr is the local side.\n\nI don\u0027t see a way to link the two objects by id, since we don\u0027t have the id of the parent when we are creating the object... we really only have the parent address..\n\nWhat am I missing?\n\nAlso, I can add a backref relationship for dependants (to get vfs from a pf object) instead of the get_by_parent_address() query, but I\u0027ve been told that this will be much slower than an actual query.\n\n[1] http://docs.sqlalchemy.org/en/latest/orm/self_referential.html","commit_id":"c4073fdd81f26e5576c8daa436fdee1c508e162a"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"439ec463d1be5443d1bf221eb709fc422ec677d1","unresolved":false,"context_lines":[{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"    numa_node \u003d Column(Integer, nullable\u003dTrue)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), nullable\u003dTrue)"},{"line_number":1407,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1408,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1409,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_60c3f389","line":1406,"updated":"2015-12-08 14:21:15.000000000","message":"Please add a comment here to describe the relation between PF and VF.  A bit like the comment for address above.","commit_id":"02721e065f9ac3cacde663e69725975df5070bcf"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c6e45b0808827c73faf23ef22381aff4ceac288d","unresolved":false,"context_lines":[{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"    numa_node \u003d Column(Integer, nullable\u003dTrue)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    parent_addr \u003d Column(String(12), nullable\u003dTrue)"},{"line_number":1407,"context_line":"    instance \u003d orm.relationship(Instance, backref\u003d\"pci_devices\","},{"line_number":1408,"context_line":"                            foreign_keys\u003dinstance_uuid,"},{"line_number":1409,"context_line":"                            primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_cc7c60ee","line":1406,"range":{"start_line":1406,"start_character":4,"end_line":1406,"end_character":51},"updated":"2015-12-08 15:14:18.000000000","message":"See discussion on the previous PS - it really seems that using an ID would be better in this case so we\u0027d need to add it too.","commit_id":"02721e065f9ac3cacde663e69725975df5070bcf"}],"nova/tests/unit/db/test_migrations.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"5485288fd8c2410e13b81b07a671a12c56d75b01","unresolved":false,"context_lines":[{"line_number":817,"context_line":"        self.assertTrue(pci_devices.c.parent_addr.nullable)"},{"line_number":818,"context_line":"        self.assertIsInstance(shadow_pci_devices.c.parent_addr.type,"},{"line_number":819,"context_line":"                              sqlalchemy.types.String)"},{"line_number":820,"context_line":"        self.assertTrue(shadow_pci_devices.c.numa_node.nullable)"},{"line_number":821,"context_line":"        self.assertIndexMembers(engine, \u0027pci_devices\u0027,"},{"line_number":822,"context_line":"                        \u0027ix_pci_devices_compute_node_id_parent_addr_deleted\u0027,"},{"line_number":823,"context_line":"                                [\u0027compute_node_id\u0027, \u0027parent_addr\u0027, \u0027deleted\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_28cb3555","line":820,"range":{"start_line":820,"start_character":45,"end_line":820,"end_character":54},"updated":"2015-12-31 09:12:07.000000000","message":"copy paste lol","commit_id":"41b62ba3cdef7e99f6728997df91c30eb7aba8a0"}]}
