)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4274965e90df94bf9aaae816afafbcec62e688de","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2020-07-01 13:30:35 +1200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move metalsmith_instances from tripleo-ansible"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I02407547154d8d6084fa30c5fe164c5b6a060043"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9f560f44_3c4f826b","line":8,"updated":"2020-08-10 19:17:42.000000000","message":"It would be good to to have a little more detail here :)","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"}],"metalsmith_ansible/ansible_plugins/modules/metalsmith_instances.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"36a2a9e21171b04150c71e2c67c3ac4d0a797005","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":"# Copyright 2020 Red Hat, Inc."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_c42ce4ad","line":1,"updated":"2020-08-25 10:04:46.000000000","message":"Do we need it in ansible plugins at all?","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4274965e90df94bf9aaae816afafbcec62e688de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":"# Copyright 2020 Red Hat, Inc."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_bc143245","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":17},"updated":"2020-08-10 19:17:42.000000000","message":"Shouldn\u0027t this be like env python? and not a pointer to the python2.7 binary?","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":"# Copyright 2020 Red Hat, Inc."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_ca4d019b","line":1,"in_reply_to":"9f560f44_c42ce4ad","updated":"2020-08-27 22:18:11.000000000","message":"There is a development workflow which allows you to just execute a module locally. If I did that with this module it was very early in its development.\n\nI\u0027ll take it out, it is breaking the rpm build","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4a23ad0dcd5d3b7d9d0f620deb6cfd9969e9ec12","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from __future__ import absolute_import"},{"line_number":18,"context_line":"__metaclass__ \u003d type"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from concurrent import futures"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_3d13bc68","line":18,"updated":"2020-08-16 16:30:31.000000000","message":"Neither are needed from Python 3, I think","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from __future__ import absolute_import"},{"line_number":18,"context_line":"__metaclass__ \u003d type"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from concurrent import futures"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_1a9d59bb","line":18,"in_reply_to":"9f560f44_3d13bc68","updated":"2020-08-27 22:18:11.000000000","message":"Done","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4a23ad0dcd5d3b7d9d0f620deb6cfd9969e9ec12","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":23,"context_line":"from ansible.module_utils.openstack import openstack_cloud_from_module"},{"line_number":24,"context_line":"from ansible.module_utils.openstack import openstack_full_argument_spec"},{"line_number":25,"context_line":"from ansible.module_utils.openstack import openstack_module_kwargs"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import metalsmith"},{"line_number":28,"context_line":"from metalsmith import instance_config"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_1d18787f","line":25,"updated":"2020-08-16 16:30:31.000000000","message":"These have been moved to the openstack ansible collection and will be missing from 2.10. Do you want to cap ansible?","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from ansible.module_utils.basic import AnsibleModule"},{"line_number":23,"context_line":"from ansible.module_utils.openstack import openstack_cloud_from_module"},{"line_number":24,"context_line":"from ansible.module_utils.openstack import openstack_full_argument_spec"},{"line_number":25,"context_line":"from ansible.module_utils.openstack import openstack_module_kwargs"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import metalsmith"},{"line_number":28,"context_line":"from metalsmith import instance_config"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_dab2c149","line":25,"in_reply_to":"9f560f44_1d18787f","updated":"2020-08-27 22:18:11.000000000","message":"I\u0027ll keep an eye on this when 2.10 comes out. tripleo-ansible is in the same situation and they don\u0027t cap ansible","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"36a2a9e21171b04150c71e2c67c3ac4d0a797005","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    \u0027metadata_version\u0027: \u00271.1\u0027,"},{"line_number":36,"context_line":"    \u0027status\u0027: [\u0027preview\u0027],"},{"line_number":37,"context_line":"    \u0027supported_by\u0027: \u0027community\u0027"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"DOCUMENTATION \u003d \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_a42730c7","line":38,"updated":"2020-08-25 10:04:46.000000000","message":"Doesn\u0027t make sense for out-of-tree modules","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    \u0027metadata_version\u0027: \u00271.1\u0027,"},{"line_number":36,"context_line":"    \u0027status\u0027: [\u0027preview\u0027],"},{"line_number":37,"context_line":"    \u0027supported_by\u0027: \u0027community\u0027"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"DOCUMENTATION \u003d \u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_1a86f966","line":38,"in_reply_to":"9f560f44_a42730c7","updated":"2020-08-27 22:18:11.000000000","message":"Done","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4a23ad0dcd5d3b7d9d0f620deb6cfd9969e9ec12","unresolved":false,"context_lines":[{"line_number":42,"context_line":"---"},{"line_number":43,"context_line":"module: metalsmith_instances"},{"line_number":44,"context_line":"short_description: Manage baremetal instances with metalsmith"},{"line_number":45,"context_line":"version_added: \"2.9\""},{"line_number":46,"context_line":"author: \"Steve Baker (@stevebaker)\""},{"line_number":47,"context_line":"description:"},{"line_number":48,"context_line":"  - Provision and unprovision ironic baremetal instances using metalsmith,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_7d0c1442","line":45,"updated":"2020-08-16 16:30:31.000000000","message":"Doesn\u0027t make sense for out-of-tree modules","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":42,"context_line":"---"},{"line_number":43,"context_line":"module: metalsmith_instances"},{"line_number":44,"context_line":"short_description: Manage baremetal instances with metalsmith"},{"line_number":45,"context_line":"version_added: \"2.9\""},{"line_number":46,"context_line":"author: \"Steve Baker (@stevebaker)\""},{"line_number":47,"context_line":"description:"},{"line_number":48,"context_line":"  - Provision and unprovision ironic baremetal instances using metalsmith,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_7a7bb57a","line":45,"in_reply_to":"9f560f44_7d0c1442","updated":"2020-08-27 22:18:11.000000000","message":"Done","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"36a2a9e21171b04150c71e2c67c3ac4d0a797005","unresolved":false,"context_lines":[{"line_number":178,"context_line":"      - An integer value representing the number of seconds to wait for the"},{"line_number":179,"context_line":"        node provision to complete."},{"line_number":180,"context_line":"    type: int"},{"line_number":181,"context_line":"    default: 3660"},{"line_number":182,"context_line":"  concurrency:"},{"line_number":183,"context_line":"    description:"},{"line_number":184,"context_line":"      - Maximum number of instances to provision at once. Set to 0 to have no"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_041c1c76","line":181,"updated":"2020-08-25 10:04:46.000000000","message":"nit: why the additional 60 seconds?","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":178,"context_line":"      - An integer value representing the number of seconds to wait for the"},{"line_number":179,"context_line":"        node provision to complete."},{"line_number":180,"context_line":"    type: int"},{"line_number":181,"context_line":"    default: 3660"},{"line_number":182,"context_line":"  concurrency:"},{"line_number":183,"context_line":"    description:"},{"line_number":184,"context_line":"      - Maximum number of instances to provision at once. Set to 0 to have no"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_7af0d5fe","line":181,"in_reply_to":"9f560f44_041c1c76","updated":"2020-08-27 22:18:11.000000000","message":"Its probably a typo, the provision playbook overrides it to its default 3600. Fixed.","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"36a2a9e21171b04150c71e2c67c3ac4d0a797005","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    description:"},{"line_number":184,"context_line":"      - Maximum number of instances to provision at once. Set to 0 to have no"},{"line_number":185,"context_line":"        concurrency limit"},{"line_number":186,"context_line":"    type: int"},{"line_number":187,"context_line":"\u0027\u0027\u0027"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_e41e486e","line":186,"updated":"2020-08-25 10:04:46.000000000","message":"what\u0027s the default here?","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    description:"},{"line_number":184,"context_line":"      - Maximum number of instances to provision at once. Set to 0 to have no"},{"line_number":185,"context_line":"        concurrency limit"},{"line_number":186,"context_line":"    type: int"},{"line_number":187,"context_line":"\u0027\u0027\u0027"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_5af511ed","line":186,"in_reply_to":"9f560f44_e41e486e","updated":"2020-08-27 22:18:11.000000000","message":"this is now zero in a different change","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"36a2a9e21171b04150c71e2c67c3ac4d0a797005","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    provision_jobs \u003d []"},{"line_number":256,"context_line":"    exceptions \u003d []"},{"line_number":257,"context_line":"    with futures.ThreadPoolExecutor(max_workers\u003dconcurrency) as p:"},{"line_number":258,"context_line":"        for i in instances:"},{"line_number":259,"context_line":"            provision_jobs.append(p.submit("},{"line_number":260,"context_line":"                _provision_instance, provisioner, i, nodes, timeout, wait"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_44129463","line":257,"updated":"2020-08-25 10:04:46.000000000","message":"This requires openstacksdk to be thread-safe. I\u0027m not sure if it\u0027s the case. Shouldn\u0027t we maybe create a connection and a provisioner per thread?","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"225622ad8a771193920e8995882668d3881bd122","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    provision_jobs \u003d []"},{"line_number":256,"context_line":"    exceptions \u003d []"},{"line_number":257,"context_line":"    with futures.ThreadPoolExecutor(max_workers\u003dconcurrency) as p:"},{"line_number":258,"context_line":"        for i in instances:"},{"line_number":259,"context_line":"            provision_jobs.append(p.submit("},{"line_number":260,"context_line":"                _provision_instance, provisioner, i, nodes, timeout, wait"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_dae0012a","line":257,"in_reply_to":"9f560f44_44129463","updated":"2020-08-27 22:18:11.000000000","message":"It is thread safe, and the Connection object even has its own internal ThreadPoolExecutor for things https://docs.openstack.org/openstacksdk/latest/user/connection.html#connection-object","commit_id":"62b8b1d8b9697248d4a3368e921b9ee67b73fd0c"}]}
