)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"25fb9ba012342c6ac0e3271d9d9742da16278060","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"592e90d3_d552ad98","updated":"2022-10-24 03:58:31.000000000","message":"recheck","commit_id":"cd0e59addc962ac06639d60963f7ee6cbe471e39"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"0922ff9b3c0aefb4f56c40ecf06f28ad798ae48a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4e21463f_3027a3ed","updated":"2022-10-25 19:12:05.000000000","message":"NB the old bridge has python 3.6, which doesn\u0027t have a setup tools that can understand a modern pyproject.toml file, which is why this can\u0027t install.  We are migrating this soon, but that\u0027s why it\u0027s -1 there.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"a90af31c76ddedf9b336e03bce8033ad08eebe7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f19b82f6_0c0c5361","updated":"2022-11-10 23:33:29.000000000","message":"recheck","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"d4329072062d76a27a19b69bcac8ccd755839cd9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"78db6650_f4db8c65","updated":"2022-11-21 16:44:29.000000000","message":"Not approving due to the minor file formatting issue called out in test_bridge.py. Otherwise I think we can land this as is.","commit_id":"ed7083ed881746d9d9dc8ad3140004cefaebde50"}],"launch/README.rst":[{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"746ba3db704dab5b524e556d03161b73821e3d6a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"  export FLAVOR\u003d\"8 GB Performance\""},{"line_number":12,"context_line":"  export FQDN\u003dservername01.opendev.org"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"  /usr/launcher-venv/bin/launch-node $FQDN --flavor \"$FLAVOR\" \\"},{"line_number":15,"context_line":"    --cloud\u003d$OS_CLOUD --region\u003d$OS_REGION_NAME"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Manually add the hostname to DNS (the launch script does not do so"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f642f33_870b7a55","line":14,"updated":"2022-11-17 00:07:49.000000000","message":"We can symlink /usr/local/sbin/launch-node to this for convenience, too, if anyone finds that preferable.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"746ba3db704dab5b524e556d03161b73821e3d6a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"run to configure DNS for a newly launched server.  To see the commands"},{"line_number":42,"context_line":"for an existing server, run::"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"  /usr/launcher-venv/bin/show-dns $FQDN"}],"source_content_type":"text/x-rst","patch_set":5,"id":"87f017a6_45ad2f3f","line":44,"updated":"2022-11-17 00:07:49.000000000","message":"We could similarly symlink this.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"}],"launch/pyproject.toml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c0b1e76248693c3c1b9273f6a7af004f496d32cf","unresolved":true,"context_lines":[{"line_number":3,"context_line":"build-backend \u003d \"setuptools.build_meta\""},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"[project]"},{"line_number":6,"context_line":"name \u003d \"opendev_node_launcher\""},{"line_number":7,"context_line":"version \u003d \"1.0.0\""},{"line_number":8,"context_line":"description \u003d \"launch nodes\""},{"line_number":9,"context_line":"requires-python \u003d \"\u003e\u003d3.6\""}],"source_content_type":"text/x-toml","patch_set":5,"id":"cc3d75df_af2e3bcb","line":6,"updated":"2022-11-16 23:55:45.000000000","message":"The package name is opendev_node_launcher but the resulting package that goes into site-packages appears to be opendev_launch. Should these two names align with one another?","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"746ba3db704dab5b524e556d03161b73821e3d6a","unresolved":false,"context_lines":[{"line_number":3,"context_line":"build-backend \u003d \"setuptools.build_meta\""},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"[project]"},{"line_number":6,"context_line":"name \u003d \"opendev_node_launcher\""},{"line_number":7,"context_line":"version \u003d \"1.0.0\""},{"line_number":8,"context_line":"description \u003d \"launch nodes\""},{"line_number":9,"context_line":"requires-python \u003d \"\u003e\u003d3.6\""}],"source_content_type":"text/x-toml","patch_set":5,"id":"5e962801_d2756f08","line":6,"updated":"2022-11-17 00:07:49.000000000","message":"They don\u0027t have to match (distribution package names are not necessarily identical to the import package names they provide), but it may be less confusing if they did.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"eb6d8fbc3418ea0b028ef62a98bc47f5ccd1f24c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"build-backend \u003d \"setuptools.build_meta\""},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"[project]"},{"line_number":6,"context_line":"name \u003d \"opendev_node_launcher\""},{"line_number":7,"context_line":"version \u003d \"1.0.0\""},{"line_number":8,"context_line":"description \u003d \"launch nodes\""},{"line_number":9,"context_line":"requires-python \u003d \"\u003e\u003d3.6\""}],"source_content_type":"text/x-toml","patch_set":5,"id":"2a388c88_f14e837e","line":6,"in_reply_to":"cc3d75df_af2e3bcb","updated":"2022-11-18 00:33:28.000000000","message":"Done for clarity","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"746ba3db704dab5b524e556d03161b73821e3d6a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"show-dns \u003d \"opendev_launch:dns.main\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"[tool.setuptools.package-data]"},{"line_number":24,"context_line":"opendev_launch \u003d [\"*.sh\"]"}],"source_content_type":"text/x-toml","patch_set":5,"id":"a5092758_360f1714","line":24,"updated":"2022-11-17 00:07:49.000000000","message":"By default, I think SetupTools includes anything with a .py extension anyway.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c0b1e76248693c3c1b9273f6a7af004f496d32cf","unresolved":true,"context_lines":[{"line_number":21,"context_line":"show-dns \u003d \"opendev_launch:dns.main\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"[tool.setuptools.package-data]"},{"line_number":24,"context_line":"opendev_launch \u003d [\"*.sh\"]"}],"source_content_type":"text/x-toml","patch_set":5,"id":"d5f44749_674be5ac","line":24,"updated":"2022-11-16 23:55:45.000000000","message":"The setuptools docs [0] imply we may need to use:\n\n  [tool.setuptools.packages.find]\n  where \u003d [\"src\"]\n\nTo have it look in the source dir. But maybe those are defaults? Similarly it seems we don\u0027t need to specify src as the source dir for python content.\n\n[0] https://setuptools.pypa.io/en/latest/userguide/datafiles.html","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"eb6d8fbc3418ea0b028ef62a98bc47f5ccd1f24c","unresolved":true,"context_lines":[{"line_number":21,"context_line":"show-dns \u003d \"opendev_launch:dns.main\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"[tool.setuptools.package-data]"},{"line_number":24,"context_line":"opendev_launch \u003d [\"*.sh\"]"}],"source_content_type":"text/x-toml","patch_set":5,"id":"cb9762ed_44c5c8f5","line":24,"in_reply_to":"d5f44749_674be5ac","updated":"2022-11-18 00:33:28.000000000","message":"I guess \"it works for me\"\n\n ./venv/lib/python3.11/site-packages/opendev_launch/utils.py\n ./venv/lib/python3.11/site-packages/opendev_launch/sshfp.py\n ./venv/lib/python3.11/site-packages/opendev_launch/sshclient.py\n ./venv/lib/python3.11/site-packages/opendev_launch/mount_volume.sh\n ./venv/lib/python3.11/site-packages/opendev_launch/make_swap.sh\n ./venv/lib/python3.11/site-packages/opendev_launch/launch_node.py\n ./venv/lib/python3.11/site-packages/opendev_launch/dns.py\n ./venv/lib/python3.11/site-packages/opendev_launch/__main__.py\n ./venv/lib/python3.11/site-packages/opendev_launch/__init__.py\n \n... so I don\u0027t think we need this?","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"}],"launch/requirements.txt":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c0b1e76248693c3c1b9273f6a7af004f496d32cf","unresolved":true,"context_lines":[{"line_number":1,"context_line":"paramiko \u003e\u003d 2.9.1"},{"line_number":2,"context_line":"# Any later seems incompatible with RAX"},{"line_number":3,"context_line":"openstacksdk\u003d\u003d\u003d0.41.0"}],"source_content_type":"text/plain","patch_set":5,"id":"5f66ba5c_af9b6a2c","line":3,"updated":"2022-11-16 23:55:45.000000000","message":"I don\u0027t think we need to debug this in this change but I was able to get osc commands working against rax with:\n\n  python-openstackclient\u003d\u003d4.0.2\n  python-cinderclient\u003d\u003d9.1.0\n  openstacksdk\u003d\u003d0.102.0\n  \nOnce this venv is in place we can refine the actual requirements.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"746ba3db704dab5b524e556d03161b73821e3d6a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"paramiko \u003e\u003d 2.9.1"},{"line_number":2,"context_line":"# Any later seems incompatible with RAX"},{"line_number":3,"context_line":"openstacksdk\u003d\u003d\u003d0.41.0"}],"source_content_type":"text/plain","patch_set":5,"id":"5bacdffe_8364c816","line":3,"updated":"2022-11-17 00:07:49.000000000","message":"Yes, I was able to make Rackspace interactions work with latest python-openstackclient as long as I pinned back to older python-cinderclient\u003c8 too.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"eb6d8fbc3418ea0b028ef62a98bc47f5ccd1f24c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"paramiko \u003e\u003d 2.9.1"},{"line_number":2,"context_line":"# Any later seems incompatible with RAX"},{"line_number":3,"context_line":"openstacksdk\u003d\u003d\u003d0.41.0"}],"source_content_type":"text/plain","patch_set":5,"id":"9833c04c_b4e354d8","line":3,"in_reply_to":"5f66ba5c_af9b6a2c","updated":"2022-11-18 00:33:28.000000000","message":"Ack","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"1228bd777f42851697190e9a0fadcbb4f5880bb8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"paramiko \u003e\u003d 2.9.1"},{"line_number":2,"context_line":"# Any later seems incompatible with RAX"},{"line_number":3,"context_line":"openstacksdk\u003d\u003d\u003d0.41.0"}],"source_content_type":"text/plain","patch_set":5,"id":"6deb3203_a60d7c53","line":3,"in_reply_to":"9833c04c_b4e354d8","updated":"2022-11-18 02:42:56.000000000","message":"Actually, in the latest PS I actually run the tool on the host for testing (what a crazy idea! 😊) and it fails as it\u0027s not py3.10 compatible.  so we should try this list i think","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"}],"launch/src/opendev_launch/__main__.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c0b1e76248693c3c1b9273f6a7af004f496d32cf","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from . import launch_node"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":4,"context_line":"    launch_node.main()"}],"source_content_type":"text/x-python","patch_set":5,"id":"ec44f880_8ae5a558","line":4,"updated":"2022-11-16 23:55:45.000000000","message":"Do we need this file? Seems like we expect people to use the commands out of the venv and this would bypass that?","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"eb6d8fbc3418ea0b028ef62a98bc47f5ccd1f24c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from . import launch_node"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":4,"context_line":"    launch_node.main()"}],"source_content_type":"text/x-python","patch_set":5,"id":"e8479231_23305755","line":4,"in_reply_to":"ec44f880_8ae5a558","updated":"2022-11-18 00:33:28.000000000","message":"Done","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"}],"playbooks/roles/install-launch-node/tasks/main.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"c0b1e76248693c3c1b9273f6a7af004f496d32cf","unresolved":true,"context_lines":[{"line_number":7,"context_line":"- name: Install node launcher"},{"line_number":8,"context_line":"  pip:"},{"line_number":9,"context_line":"    name: \u0027file:///home/zuul/src/opendev.org/opendev/system-config/launch\u0027"},{"line_number":10,"context_line":"    virtualenv: \u0027/usr/launcher-venv\u0027"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"383ccb23_35a64110","line":10,"updated":"2022-11-16 23:55:45.000000000","message":"Do we need a state: latest on this to make sure we install updates?\n\nAlso doing a test install locally (without ansible just a venv manually) this doesn\u0027t appear to install our requirements. I suspect that setuptools isn\u0027t finding that list as we expect.","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"eb6d8fbc3418ea0b028ef62a98bc47f5ccd1f24c","unresolved":true,"context_lines":[{"line_number":7,"context_line":"- name: Install node launcher"},{"line_number":8,"context_line":"  pip:"},{"line_number":9,"context_line":"    name: \u0027file:///home/zuul/src/opendev.org/opendev/system-config/launch\u0027"},{"line_number":10,"context_line":"    virtualenv: \u0027/usr/launcher-venv\u0027"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"709eb367_1898d235","line":10,"in_reply_to":"383ccb23_35a64110","updated":"2022-11-18 00:33:28.000000000","message":"I moved it into the pytoml dependencies\u003d[] section\n\nI feel like this calls \"pip install\" \n\n https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/pip.py#L634\n\nand because it\u0027s installing from a file I think it\u0027s basically going to refresh it; I see\n \n $ ./venv/bin/pip install  ~/programs/openstack-infra/system-config/launch/\n Installing collected packages: opendev-launch\n   Attempting uninstall: opendev-launch\n     Found existing installation: opendev-launch 1.0.0\n     Uninstalling opendev-launch-1.0.0:\n       Successfully uninstalled opendev-launch-1.0.0\n Successfully installed opendev-launch-1.0.0","commit_id":"dbf847a02a03e57e8e7fb14e22992b818c7dee68"}],"testinfra/test_bridge.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"d4329072062d76a27a19b69bcac8ccd755839cd9","unresolved":true,"context_lines":[{"line_number":23,"context_line":"    assert \u0027extra\u0027 in zuul_data"},{"line_number":24,"context_line":"    assert \u0027zuul\u0027 in zuul_data[\u0027extra\u0027]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def test_clouds_yaml(host):"},{"line_number":28,"context_line":"    clouds_yaml \u003d host.file(\u0027/etc/openstack/clouds.yaml\u0027)"},{"line_number":29,"context_line":"    assert clouds_yaml.exists"}],"source_content_type":"text/x-python","patch_set":9,"id":"70a12d48_766170a5","side":"PARENT","line":26,"updated":"2022-11-21 16:44:29.000000000","message":"Any idea why these newlines are removed? I think two blank lines between functions is a pep8 rule that we\u0027re now breaking.","commit_id":"95c9cf6ec6e3f210c00db4fceffaa9c159c518d6"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"b10a24c60b25b0870ff09c538a988cac1fb92312","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    assert \u0027extra\u0027 in zuul_data"},{"line_number":24,"context_line":"    assert \u0027zuul\u0027 in zuul_data[\u0027extra\u0027]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def test_clouds_yaml(host):"},{"line_number":28,"context_line":"    clouds_yaml \u003d host.file(\u0027/etc/openstack/clouds.yaml\u0027)"},{"line_number":29,"context_line":"    assert clouds_yaml.exists"}],"source_content_type":"text/x-python","patch_set":9,"id":"e0069414_07407bf6","side":"PARENT","line":26,"in_reply_to":"6d19849a_2c6fca96","updated":"2022-11-21 22:49:33.000000000","message":"I think we agreed this is close enough to what the other files do","commit_id":"95c9cf6ec6e3f210c00db4fceffaa9c159c518d6"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"ae5bce928d0c7f446a621e914ae60bab5ab46216","unresolved":true,"context_lines":[{"line_number":23,"context_line":"    assert \u0027extra\u0027 in zuul_data"},{"line_number":24,"context_line":"    assert \u0027zuul\u0027 in zuul_data[\u0027extra\u0027]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def test_clouds_yaml(host):"},{"line_number":28,"context_line":"    clouds_yaml \u003d host.file(\u0027/etc/openstack/clouds.yaml\u0027)"},{"line_number":29,"context_line":"    assert clouds_yaml.exists"}],"source_content_type":"text/x-python","patch_set":9,"id":"6d19849a_2c6fca96","side":"PARENT","line":26,"in_reply_to":"70a12d48_766170a5","updated":"2022-11-21 20:35:17.000000000","message":"I think it\u0027s two lines between classes -- most of our other files don\u0027t have two lines between the functions?  It just looked weird to me as i was adding to this.","commit_id":"95c9cf6ec6e3f210c00db4fceffaa9c159c518d6"}]}
