)]}'
{".zuul.yaml":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"69e079193f3aec90e2bda96edd4f1bf761f90ef4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    required-projects:"},{"line_number":174,"context_line":"      - openstack/oslo.versionedobjects"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"- project:"},{"line_number":177,"context_line":"    # Please try to keep the list of job names sorted alphabetically."},{"line_number":178,"context_line":"    templates:"},{"line_number":179,"context_line":"      - check-requirements"},{"line_number":180,"context_line":"      - integrated-gate"},{"line_number":181,"context_line":"      - integrated-gate-py35"},{"line_number":182,"context_line":"      - openstack-cover-jobs"},{"line_number":183,"context_line":"      - openstack-lower-constraints-jobs"},{"line_number":184,"context_line":"      - openstack-python-jobs:"},{"line_number":185,"context_line":"          required-projects:"},{"line_number":186,"context_line":"              - openstack/placement"},{"line_number":187,"context_line":"      - openstack-python35-jobs:"},{"line_number":188,"context_line":"          required-projects:"},{"line_number":189,"context_line":"              - openstack/placement"},{"line_number":190,"context_line":"      - openstack-python36-jobs:"},{"line_number":191,"context_line":"          required-projects:"},{"line_number":192,"context_line":"              - openstack/placement"},{"line_number":193,"context_line":"      - periodic-stable-jobs"},{"line_number":194,"context_line":"      - publish-openstack-docs-pti"},{"line_number":195,"context_line":"      - release-notes-jobs-python3"},{"line_number":196,"context_line":"    check:"},{"line_number":197,"context_line":"      jobs:"},{"line_number":198,"context_line":"        # We define our own irrelevant-files so we don\u0027t run the job"},{"line_number":199,"context_line":"        # on things like nova docs-only changes."},{"line_number":200,"context_line":"        - ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa:"},{"line_number":201,"context_line":"            voting: false"},{"line_number":202,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":203,"context_line":"        - devstack-plugin-ceph-tempest:"},{"line_number":204,"context_line":"            voting: false"},{"line_number":205,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":206,"context_line":"        - legacy-grenade-dsvm-neutron-multinode-live-migration:"},{"line_number":207,"context_line":"            voting: false"},{"line_number":208,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":209,"context_line":"        - neutron-grenade:"},{"line_number":210,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":211,"context_line":"        - neutron-grenade-multinode:"},{"line_number":212,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":213,"context_line":"        - neutron-tempest-linuxbridge:"},{"line_number":214,"context_line":"            irrelevant-files:"},{"line_number":215,"context_line":"              # NOTE(mriedem): This job has its own irrelevant-files section"},{"line_number":216,"context_line":"              # so that we only run it on changes to networking and libvirt/vif"},{"line_number":217,"context_line":"              # code; we don\u0027t need to run this on all changes, nor do we run"},{"line_number":218,"context_line":"              # it in the gate."},{"line_number":219,"context_line":"              - ^(?!nova/network/.*)(?!nova/virt/libvirt/vif.py).*$"},{"line_number":220,"context_line":"        - nova-cells-v1"},{"line_number":221,"context_line":"        - nova-live-migration"},{"line_number":222,"context_line":"        - nova-lvm"},{"line_number":223,"context_line":"        - nova-multiattach"},{"line_number":224,"context_line":"        - nova-next"},{"line_number":225,"context_line":"        - nova-tox-functional"},{"line_number":226,"context_line":"        - nova-tox-functional-py35"},{"line_number":227,"context_line":"        - tempest-full:"},{"line_number":228,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":229,"context_line":"        - tempest-full-py3:"},{"line_number":230,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":231,"context_line":"        - tempest-multinode-full:"},{"line_number":232,"context_line":"            voting: false"},{"line_number":233,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":234,"context_line":"        - tempest-slow:"},{"line_number":235,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":236,"context_line":"    gate:"},{"line_number":237,"context_line":"      jobs:"},{"line_number":238,"context_line":"        - neutron-grenade:"},{"line_number":239,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":240,"context_line":"        - nova-cells-v1"},{"line_number":241,"context_line":"        - nova-live-migration"},{"line_number":242,"context_line":"        - nova-multiattach"},{"line_number":243,"context_line":"        - nova-tox-functional"},{"line_number":244,"context_line":"        - nova-tox-functional-py35"},{"line_number":245,"context_line":"        - nova-next"},{"line_number":246,"context_line":"        - tempest-full:"},{"line_number":247,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":248,"context_line":"        - tempest-full-py3:"},{"line_number":249,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":250,"context_line":"        - tempest-slow:"},{"line_number":251,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":252,"context_line":"    experimental:"},{"line_number":253,"context_line":"      jobs:"},{"line_number":254,"context_line":"        - ironic-tempest-dsvm-bfv:"},{"line_number":255,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":256,"context_line":"        - ironic-tempest-dsvm-ipa-wholedisk-agent_ipmitool-tinyipa-multinode:"},{"line_number":257,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":258,"context_line":"        - barbican-simple-crypto-devstack-tempest:"},{"line_number":259,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":260,"context_line":"        - devstack-plugin-ceph-tempest-py3:"},{"line_number":261,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":262,"context_line":"        - legacy-grenade-dsvm-neutron-multinode-zero-downtime:"},{"line_number":263,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":264,"context_line":"        - legacy-tempest-dsvm-full-devstack-plugin-nfs:"},{"line_number":265,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":266,"context_line":"        - tempest-full-py3-opensuse150:"},{"line_number":267,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":268,"context_line":"        - tempest-pg-full:"},{"line_number":269,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":270,"context_line":"        - nova-tempest-full-oslo.versionedobjects:"},{"line_number":271,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":272,"context_line":"        - legacy-tempest-dsvm-nova-libvirt-kvm-apr:"},{"line_number":273,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":274,"context_line":"        - nova-tempest-v2-api:"},{"line_number":275,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":276,"context_line":"        - legacy-tempest-dsvm-neutron-dvr-multinode-full:"},{"line_number":277,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":278,"context_line":"        - neutron-tempest-dvr-ha-multinode-full:"},{"line_number":279,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"},{"line_number":280,"context_line":"        - os-vif-ovs:"},{"line_number":281,"context_line":"            irrelevant-files: *dsvm-irrelevant-files"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3f79a3b5_c1a9bc78","line":281,"range":{"start_line":176,"start_character":2,"end_line":281,"end_character":0},"updated":"2018-11-14 16:59:27.000000000","message":"expected str @ data[\u0027templates\u0027][5]","commit_id":"c3e9f07303c07d545fdccd3887a4f798c9cbe8a9"}],"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c26525f2368926ad352a6c3c2535d9599d6c5dbc","unresolved":false,"context_lines":[{"line_number":17,"context_line":"on placement in any way, and we enforce this by not having placement"},{"line_number":18,"context_line":"in the test env."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The concept of tox-siblings is used to ensure that the"},{"line_number":21,"context_line":"placement requirement will be satisfied correctly if there is a"},{"line_number":22,"context_line":"depends-on. To make this happen, the functional jobs defined in"},{"line_number":23,"context_line":".zuul.yaml are updated to require openstack/placement."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"tox.ini has to be updated to use a envdir that is the same"},{"line_number":26,"context_line":"name as job. Otherwise the tox siblings role in ansible cannot work."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3f79a3b5_be336bf8","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":54},"updated":"2018-11-15 15:59:22.000000000","message":"oh this is smart. that makes sense.","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8f7461ca35816e31f00aeb320601025232d0c5ce","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Similarly, a test of the comparison function for the api samples tests"},{"line_number":35,"context_line":"is moved into functional, because it depends on placement functionality,"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"TestUpgradeCheckResourceProviders in unit.cmd.test_status is removed."},{"line_number":38,"context_line":"It relies on direct access to a placement database, not the API."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The depends on points to a change in openstack/placement which"},{"line_number":41,"context_line":"makes the placement database fixture easier to use externally."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"3f79a3b5_e89ded54","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":64},"updated":"2018-11-28 14:12:36.000000000","message":"This is really the only thing that worries me about the test removals. Do we have a functional test for cmd.nova_status? If so, can we put this test (or at least something like this test) in there? Alternately, perhaps mock out the placement DB interaction entirely in the unit test?","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4fc4ba2eb2ab7d86bd2e6b03b378256ce432477f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Similarly, a test of the comparison function for the api samples tests"},{"line_number":35,"context_line":"is moved into functional, because it depends on placement functionality,"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"TestUpgradeCheckResourceProviders in unit.cmd.test_status is removed."},{"line_number":38,"context_line":"It relies on direct access to a placement database, not the API."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The depends on points to a change in openstack/placement which"},{"line_number":41,"context_line":"makes the placement database fixture easier to use externally."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"3f79a3b5_94eb1979","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":64},"in_reply_to":"3f79a3b5_9687b611","updated":"2018-11-29 13:42:52.000000000","message":"I read back on the IRC log and the PS21 comments. My understanding is that we might want to keep the TestUpgradeCheckResourceProviders until we decide what to do with the placement dependent code in the nova-status. To keep the test passing we have to massively mock the db calls, but this is a unit test now so that is allowed. OR we have to move the test to the functional test where we have placement service available (and change the status check implementation to depend on placement direct instead of the placement db).","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e9b3f607f28a45a9a77d260079c8d0a14174476f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Similarly, a test of the comparison function for the api samples tests"},{"line_number":35,"context_line":"is moved into functional, because it depends on placement functionality,"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"TestUpgradeCheckResourceProviders in unit.cmd.test_status is removed."},{"line_number":38,"context_line":"It relies on direct access to a placement database, not the API."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The depends on points to a change in openstack/placement which"},{"line_number":41,"context_line":"makes the placement database fixture easier to use externally."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"3f79a3b5_9687b611","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":64},"in_reply_to":"3f79a3b5_e89ded54","updated":"2018-11-28 14:30:49.000000000","message":"Matt and I talked about this in the comments on ps21 and irc: http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2018-11-26.log.html#t2018-11-26T15:44:32","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8f7461ca35816e31f00aeb320601025232d0c5ce","unresolved":false,"context_lines":[{"line_number":40,"context_line":"The depends on points to a change in openstack/placement which"},{"line_number":41,"context_line":"makes the placement database fixture easier to use externally."},{"line_number":42,"context_line":"This includes changes to automate management of the database and"},{"line_number":43,"context_line":"the removal of global oslo_config, the presence of which causes"},{"line_number":44,"context_line":"no end of debugging challenges."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Depends-On: Icd629d7cd6d68ca08f9f3b4f0465c3d9a1efeb22"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"3f79a3b5_88b239e7","line":43,"range":{"start_line":43,"start_character":4,"end_line":43,"end_character":33},"updated":"2018-11-28 14:12:36.000000000","message":"\\o/ Josh Harlow would be so happy.","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"}],"nova/cmd/manage.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8f7461ca35816e31f00aeb320601025232d0c5ce","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        # need to be populated if it was not specified during boot time."},{"line_number":417,"context_line":"        instance_obj.populate_missing_availability_zones,"},{"line_number":418,"context_line":"        # Added in Rocky"},{"line_number":419,"context_line":"        # FIXME(cdent): This is a factor that needs to be addressed somehow"},{"line_number":420,"context_line":"        consumer_obj.create_incomplete_consumers,"},{"line_number":421,"context_line":"        # Added in Rocky"},{"line_number":422,"context_line":"        instance_mapping_obj.populate_queued_for_delete,"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_08fe2938","line":419,"updated":"2018-11-28 14:12:36.000000000","message":"/me mentions something about having a real consumers endpoint :P","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4fc4ba2eb2ab7d86bd2e6b03b378256ce432477f","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        # need to be populated if it was not specified during boot time."},{"line_number":417,"context_line":"        instance_obj.populate_missing_availability_zones,"},{"line_number":418,"context_line":"        # Added in Rocky"},{"line_number":419,"context_line":"        # FIXME(cdent): This is a factor that needs to be addressed somehow"},{"line_number":420,"context_line":"        consumer_obj.create_incomplete_consumers,"},{"line_number":421,"context_line":"        # Added in Rocky"},{"line_number":422,"context_line":"        instance_mapping_obj.populate_queued_for_delete,"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_54410162","line":419,"in_reply_to":"3f79a3b5_08fe2938","updated":"2018-11-29 13:42:52.000000000","message":"maybe use PlacementDirect during FFU to access the placement db through the placement python code?","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"}],"nova/cmd/status.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3fd8ed9c3106a84b7287cc7b1e62a023c1037c9","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        if num_rps \u003d\u003d 0:"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"            if num_computes !\u003d 0:"},{"line_number":309,"context_line":"                # This is a warning because there are compute nodes in the"},{"line_number":310,"context_line":"                # database but nothing is reporting resource providers to the"},{"line_number":311,"context_line":"                # placement service. This will not result in scheduling"},{"line_number":312,"context_line":"                # failures in Ocata because of the fallback that is in place"},{"line_number":313,"context_line":"                # but we signal it as a warning since there is work to do."},{"line_number":314,"context_line":"                msg \u003d (_(\u0027There are no compute resource providers in the \u0027"},{"line_number":315,"context_line":"                         \u0027Placement service but there are %(num_computes)s \u0027"},{"line_number":316,"context_line":"                         \u0027compute nodes in the deployment. This means no \u0027"},{"line_number":317,"context_line":"                         \u0027compute nodes are reporting into the Placement \u0027"},{"line_number":318,"context_line":"                         \u0027service and need to be upgraded and/or fixed. See \u0027"},{"line_number":319,"context_line":"                         \u0027%(placement_docs_link)s for more details.\u0027) %"},{"line_number":320,"context_line":"                       {\u0027num_computes\u0027: num_computes,"},{"line_number":321,"context_line":"                        \u0027placement_docs_link\u0027: PLACEMENT_DOCS_LINK})"},{"line_number":322,"context_line":"                return UpgradeCheckResult(UpgradeCheckCode.WARNING, msg)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"            # There are no resource providers and no compute nodes so we"},{"line_number":325,"context_line":"            # assume this is a fresh install and move on. We should return a"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_35ba8adf","line":322,"range":{"start_line":308,"start_character":12,"end_line":322,"end_character":72},"updated":"2018-11-26 16:06:14.000000000","message":"This is all out of date since the scheduler will fail now if there are no resource providers. We haven\u0027t updated older checks since they are kind of point-in-time things and would require some thought/discussion on what to do about older checks that no longer apply to master, i.e. I\u0027m not exactly sure about FFU cases where someone is going from Ocata to let\u0027s say Rocky, would they even run these? And if so, are they required to run them in order or can they spin up the target release (Rocky) in a container and run the checks from there? I would think you\u0027d need to run the checks per release as you run through them, just like the online data migrations.","commit_id":"b3975a07752de81c8fca8e9604434e6d2a398cd2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4fc4ba2eb2ab7d86bd2e6b03b378256ce432477f","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        # and resource class, so we can simply count the number of inventories"},{"line_number":252,"context_line":"        # records for the given resource class and those will uniquely identify"},{"line_number":253,"context_line":"        # the number of resource providers we care about."},{"line_number":254,"context_line":"        # FIXME(cdent): This will be a different project soon."},{"line_number":255,"context_line":"        meta \u003d MetaData(bind\u003dplacement_db.get_placement_engine())"},{"line_number":256,"context_line":"        inventories \u003d Table(\u0027inventories\u0027, meta, autoload\u003dTrue)"},{"line_number":257,"context_line":"        return select([sqlfunc.count()]).select_from("},{"line_number":258,"context_line":"            inventories).where("},{"line_number":259,"context_line":"                   inventories.c.resource_class_id \u003d\u003d vcpu_rc_id).scalar()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @staticmethod"},{"line_number":262,"context_line":"    def _get_non_cell0_mappings():"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_942c79b2","line":259,"range":{"start_line":254,"start_character":1,"end_line":259,"end_character":74},"updated":"2018-11-29 13:42:52.000000000","message":"maybe PlacementDirect can help here","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7496dca978a0de98b1568f16eeb42db2f430ba02","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        # and resource class, so we can simply count the number of inventories"},{"line_number":252,"context_line":"        # records for the given resource class and those will uniquely identify"},{"line_number":253,"context_line":"        # the number of resource providers we care about."},{"line_number":254,"context_line":"        # FIXME(cdent): This will be a different project soon."},{"line_number":255,"context_line":"        meta \u003d MetaData(bind\u003dplacement_db.get_placement_engine())"},{"line_number":256,"context_line":"        inventories \u003d Table(\u0027inventories\u0027, meta, autoload\u003dTrue)"},{"line_number":257,"context_line":"        return select([sqlfunc.count()]).select_from("},{"line_number":258,"context_line":"            inventories).where("},{"line_number":259,"context_line":"                   inventories.c.resource_class_id \u003d\u003d vcpu_rc_id).scalar()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @staticmethod"},{"line_number":262,"context_line":"    def _get_non_cell0_mappings():"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_20ec3f04","line":259,"range":{"start_line":254,"start_character":1,"end_line":259,"end_character":74},"in_reply_to":"3f79a3b5_0fd37666","updated":"2018-11-29 15:58:21.000000000","message":"Not with a single API call but with multiple calls. BUT i see that would be pretty sub-optimal. Thanks for the clarification.","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ed8726b3c7574ad4f03923fd14b694ef1f86e1c8","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        # and resource class, so we can simply count the number of inventories"},{"line_number":252,"context_line":"        # records for the given resource class and those will uniquely identify"},{"line_number":253,"context_line":"        # the number of resource providers we care about."},{"line_number":254,"context_line":"        # FIXME(cdent): This will be a different project soon."},{"line_number":255,"context_line":"        meta \u003d MetaData(bind\u003dplacement_db.get_placement_engine())"},{"line_number":256,"context_line":"        inventories \u003d Table(\u0027inventories\u0027, meta, autoload\u003dTrue)"},{"line_number":257,"context_line":"        return select([sqlfunc.count()]).select_from("},{"line_number":258,"context_line":"            inventories).where("},{"line_number":259,"context_line":"                   inventories.c.resource_class_id \u003d\u003d vcpu_rc_id).scalar()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @staticmethod"},{"line_number":262,"context_line":"    def _get_non_cell0_mappings():"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_0fd37666","line":259,"range":{"start_line":254,"start_character":1,"end_line":259,"end_character":74},"in_reply_to":"3f79a3b5_942c79b2","updated":"2018-11-29 13:50:54.000000000","message":"Not currently. There\u0027s no HTTP API on placement that can answer this question (I wrote a spec for one: https://review.openstack.org/#/c/600016/ ) and PlacementDirect is designed to expose the HTTP API of placement, in-process. Of course once you\u0027ve got that you can probably get under the hood. But once you are under the hood, you\u0027ve got the placement code locally, and my understanding was we _don\u0027t_ want that in this context.","commit_id":"50a4f4e1d1a4711ddaf0bf30eff0244826f028bd"}],"nova/tests/functional/api_paste_fixture.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c26525f2368926ad352a6c3c2535d9599d6c5dbc","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"from __future__ import absolute_import"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_deed0702","line":14,"range":{"start_line":14,"start_character":23,"end_line":14,"end_character":38},"updated":"2018-11-15 15:59:22.000000000","message":"im totally fine with this as a safty mesure but from reading \nhttps://www.python.org/dev/peps/pep-0328/\n\nim surprised this is needed as it seams relitive imports require a preceding \".\" to be valid after python 2.6\n\nso these should all be absolute already no?","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"451aadda7c28dccc7dd9b7e7d24707b55a33480e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"from __future__ import absolute_import"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_1e0b7f7c","line":14,"range":{"start_line":14,"start_character":23,"end_line":14,"end_character":38},"in_reply_to":"3f79a3b5_deed0702","updated":"2018-11-15 16:20:31.000000000","message":"In py27 \u0027import fixtures\u0027 without the above will fail because of the presence of the new nova/tests/functional/fixtures.py","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"}],"nova/tests/functional/fixtures.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e9e8cd3683fa73b2f46051f1f394b08562027736","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"3f79a3b5_24a433a4","updated":"2018-11-15 11:10:38.000000000","message":"I think nova.tests.functional.fixtures conflicts with the standard fixture package. I guess it is yet another absolute import issue.\n\nFailed to import test module: nova.tests.functional.test_middleware\nTraceback (most recent call last):\n  File \"/mnt/ssd/ebalgib/nova/functional/.tox/functional/local/lib/python2.7/site-packages/unittest2/loader.py\", line 456, in _find_test_path\n    module \u003d self._get_module_from_name(name)\n  File \"/mnt/ssd/ebalgib/nova/functional/.tox/functional/local/lib/python2.7/site-packages/unittest2/loader.py\", line 395, in _get_module_from_name\n    __import__(name)\n  File \"nova/tests/functional/test_middleware.py\", line 18, in \u003cmodule\u003e\n    from nova.tests.functional.api_sample_tests import api_sample_base\n  File \"nova/tests/functional/api_sample_tests/api_sample_base.py\", line 22, in \u003cmodule\u003e\n    from nova.tests.functional import api_paste_fixture\n  File \"nova/tests/functional/api_paste_fixture.py\", line 26, in \u003cmodule\u003e\n    class ApiPasteV21Fixture(fixtures.Fixture):\nAttributeError: \u0027module\u0027 object has no attribute \u0027Fixture\u0027","commit_id":"39689ebbb83449fa853635314923f8de5d33de6c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6f7e62679e343af29edee2b12df52eabc2ff0c41","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_725fb8dd","line":1,"updated":"2018-11-26 15:17:59.000000000","message":"I still don\u0027t like this fixture. But removing it completely is for another patch, I guess.","commit_id":"b3975a07752de81c8fca8e9604434e6d2a398cd2"}],"nova/tests/functional/test_nova_status.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"82ab7babf60887b25fd4cd23b0f16d7153ccb124","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import fixtures"},{"line_number":15,"context_line":"from six.moves import StringIO"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"},{"line_number":18,"context_line":"from oslo_config import fixture as config_fixture"},{"line_number":19,"context_line":"from oslo_utils.fixture import uuidsentinel as uuids"}],"source_content_type":"text/x-python","patch_set":27,"id":"3f79a3b5_ec933d4c","line":16,"updated":"2018-12-05 02:02:27.000000000","message":"nit:\nThis blank line is not necessary.\nAnd line 14-21 should be sorted by package name in alphabetical order.","commit_id":"ba2b5904b637215a3f15e9c669f261c537e6d3cd"}],"nova/tests/unit/cmd/test_status.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4759687208ef1efb1e59847c80924bf37de3704","unresolved":false,"context_lines":[{"line_number":472,"context_line":"}"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"class TestUpgradeCheckResourceProviders(test.NoDBTestCase):"},{"line_number":476,"context_line":"    \"\"\"Tests for the nova-status upgrade check on resource providers.\"\"\""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    # We\u0027ll setup the database ourselves because we need to use cells fixtures"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_b2031011","side":"PARENT","line":475,"updated":"2018-11-26 15:49:28.000000000","message":"Since the check code for the status command still exists, I\u0027m not sure why these tests were removed...","commit_id":"7217e38bafb75e8a613763835b64e48e6b2c8ece"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7a56c947e4ecdb6788a57108f06c877227df32b2","unresolved":false,"context_lines":[{"line_number":472,"context_line":"}"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"class TestUpgradeCheckResourceProviders(test.NoDBTestCase):"},{"line_number":476,"context_line":"    \"\"\"Tests for the nova-status upgrade check on resource providers.\"\"\""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    # We\u0027ll setup the database ourselves because we need to use cells fixtures"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_55ddc66b","side":"PARENT","line":475,"in_reply_to":"3f79a3b5_b2031011","updated":"2018-11-26 15:59:38.000000000","message":"Matt and I talked about this in irc: http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2018-11-26.log.html#t2018-11-26T15:44:32\n\nthe gist is: we\u0027ll figure out what the right fix is depending on our choices on how the command goes","commit_id":"7217e38bafb75e8a613763835b64e48e6b2c8ece"}],"test-requirements.txt":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fa1793d961a8c84398f42ad7dd572aad99dcef89","unresolved":false,"context_lines":[{"line_number":21,"context_line":"testtools\u003e\u003d2.2.0 # MIT"},{"line_number":22,"context_line":"bandit\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":23,"context_line":"gabbi\u003e\u003d1.35.0 # Apache-2.0"},{"line_number":24,"context_line":"# This will be overridden in the gate via tox-siblings, version"},{"line_number":25,"context_line":"# is not (yet) relevant."},{"line_number":26,"context_line":"openstack-placement"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# vmwareapi driver specific dependencies"},{"line_number":29,"context_line":"oslo.vmware\u003e\u003d2.17.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":9,"id":"3f79a3b5_690a0620","line":26,"range":{"start_line":24,"start_character":0,"end_line":26,"end_character":19},"updated":"2018-11-15 09:29:05.000000000","message":"Do we really need this if tox-siblings overwrite it anyhow?\n\nIf this is just for the local dev env where tox-siblings does help then I guess we need to install the master branch of placement by default as that is what openstack-nova will be released with so that is what we need to be testing with.","commit_id":"edada9f006ac98f3207b007323b88637e26a3125"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7871db8c5fd584f4cf4e7e2fbd1c334fdfa61b94","unresolved":false,"context_lines":[{"line_number":21,"context_line":"testtools\u003e\u003d2.2.0 # MIT"},{"line_number":22,"context_line":"bandit\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":23,"context_line":"gabbi\u003e\u003d1.35.0 # Apache-2.0"},{"line_number":24,"context_line":"# This will be overridden in the gate via tox-siblings, version"},{"line_number":25,"context_line":"# is not (yet) relevant."},{"line_number":26,"context_line":"openstack-placement"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# vmwareapi driver specific dependencies"},{"line_number":29,"context_line":"oslo.vmware\u003e\u003d2.17.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":9,"id":"3f79a3b5_a94ede6a","line":26,"range":{"start_line":24,"start_character":0,"end_line":26,"end_character":19},"in_reply_to":"3f79a3b5_690a0620","updated":"2018-11-15 09:33:12.000000000","message":"In order for tox-siblings to kick in (as far as I can tell) the package has to be in the tox-env so it can be replaced.","commit_id":"edada9f006ac98f3207b007323b88637e26a3125"}],"tox.ini":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"acfd89307b3e7397b1f934e5e4cdf9b171076b1d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":13,"id":"3f79a3b5_6ac4350e","line":84,"updated":"2018-11-15 12:30:31.000000000","message":"By replacing this line to point to the patch in depends-on I was able to run the functional tests locally\n\ngit+https://git.openstack.org/openstack/placement@refs/changes/35/617935/5#egg\u003dplacement\n\nExcept one functional test:\n\nnova.tests.functional.regressions.test_bug_1679750.TestLocalDeleteAllocations.test_local_delete_removes_allocations_after_compute_restart","commit_id":"59e8c7be2b0a2981838c31e245a0e38f95016fab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bd6e7b2bab04c91a9ae7aa57ebc3adac87c50940","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":13,"id":"3f79a3b5_edba9f0a","line":84,"in_reply_to":"3f79a3b5_6a49958b","updated":"2018-11-15 13:01:17.000000000","message":"Hm. It is in the logs even if the test passes successfully on master:\n\n2018-11-15 07:59:26,587 WARNING [nova.scheduler.client.report] No authentication information found for placement API","commit_id":"59e8c7be2b0a2981838c31e245a0e38f95016fab"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"442554de016fa927884f2aa3aefeee27bda83aa3","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":13,"id":"3f79a3b5_6a49958b","line":84,"in_reply_to":"3f79a3b5_6ac4350e","updated":"2018-11-15 12:40:12.000000000","message":"That appears to be because of missing configuration settings for keystone, but I\u0027m not certain.","commit_id":"59e8c7be2b0a2981838c31e245a0e38f95016fab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b6b1c19f38b7946c2b3564a22225e55d2e19c9dc","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":13,"id":"3f79a3b5_8a519134","line":84,"in_reply_to":"3f79a3b5_6ac4350e","updated":"2018-11-15 12:40:54.000000000","message":"That test instantiating the PlacementFixture twice and expects that the state inside the fixtures are the same","commit_id":"59e8c7be2b0a2981838c31e245a0e38f95016fab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5af6d6cce5ebb94715b5d206fef958a86c1a730c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":15,"id":"3f79a3b5_be612bd8","line":84,"updated":"2018-11-15 15:43:15.000000000","message":"Can we change this line to install placement from the git master branch? That would help a lot for a nova developer that does not need to change placement at all but still want to run all the nova functional test locally.","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"451aadda7c28dccc7dd9b7e7d24707b55a33480e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":15,"id":"3f79a3b5_be360b50","line":84,"in_reply_to":"3f79a3b5_3ecbdb7f","updated":"2018-11-15 16:20:31.000000000","message":"I\u0027ve posted a followup to test it, to confirm/deny. I interrupted the job where I tried it earlier in this stack before logs were saved, so I can\u0027t check. If it works, then yes, we want it.","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e54edc54c99a87a4fd874e658583605fd7c4c32e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":15,"id":"3f79a3b5_3676970d","line":84,"in_reply_to":"3f79a3b5_be360b50","updated":"2018-11-16 10:02:30.000000000","message":"I think I was able to make this work with master \n and still pass the gate in https://review.openstack.org/#/c/618490/","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"83c33c7c16867845267b7e8f19e3a3fc83ffcf12","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":15,"id":"3f79a3b5_be8feb75","line":84,"in_reply_to":"3f79a3b5_be612bd8","updated":"2018-11-15 15:47:22.000000000","message":"I tried that and tox-siblings didn\u0027t work. I think we\u0027re going to need to release to pypi more often and probably also document that local testers who care about placement need to do something special.\n\nI meant to explain that a bit more, but I guess I forgot.\n\nI think, but am not sure, that the tox siblings problem is something to do with how openstack-placement shows up when doing a pip freeze, but I\u0027m not certain, and it might be worth confirming the behavior, because it would could just pull master, that would certainly be nicer.","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c26525f2368926ad352a6c3c2535d9599d6c5dbc","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  openstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":15,"id":"3f79a3b5_3ecbdb7f","line":84,"in_reply_to":"3f79a3b5_be8feb75","updated":"2018-11-15 15:59:22.000000000","message":"you should be able to do this\n\n-e git+https://github.com/openstack/placement.git@master#egg\u003dplacement\n\nit works in the requiremetns files anyway\n\nhttps://github.com/openstack/networking-ovs-dpdk/blob/master/test-requirements.txt#L25","commit_id":"a7d542fb717489fa5d3605844124d0e1afc218f1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"04c0148a7ddbf48e888495e46c6e227b9e4f7a99","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  git+https://git.openstack.org/openstack/placement#egg\u003dopenstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":16,"id":"3f79a3b5_35019509","line":84,"updated":"2018-11-19 15:28:35.000000000","message":"I would add a note here. Something like:\n\"As nova functional test imports the PlacementFixture from the placement repository, these test are running with latest master from placement by default. On the gate Zuul will clone the latest master from placement OR the version of placement the Depends-On in the commit message suggests. If you want to run the test locally with an un-merged placement change the modify this line locally to point to your dependency.\"","commit_id":"78a11f9f140b19ae87bcb4986c8e59693a4fe9ac"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f6ea18e4bed577bfca30733bc53989f59db21b48","unresolved":false,"context_lines":[{"line_number":81,"context_line":"# Only allow external placement in functional tests."},{"line_number":82,"context_line":"deps \u003d"},{"line_number":83,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":84,"context_line":"  git+https://git.openstack.org/openstack/placement#egg\u003dopenstack-placement"},{"line_number":85,"context_line":"commands \u003d"},{"line_number":86,"context_line":"  {[testenv]commands}"},{"line_number":87,"context_line":"# NOTE(cdent): The group_regex describes how stestr will group tests into the"}],"source_content_type":"text/x-properties","patch_set":16,"id":"3f79a3b5_d8ff3801","line":84,"in_reply_to":"3f79a3b5_35019509","updated":"2018-11-19 15:37:06.000000000","message":"Good idea, I\u0027ll get that sometime today, either in this patch or a followup depending on how reviewing goes.","commit_id":"78a11f9f140b19ae87bcb4986c8e59693a4fe9ac"}]}
