)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"edab107edd214d983e20181a3b1980475c36282e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"272c5d6c_1517f324","updated":"2024-02-29 08:44:20.000000000","message":"recheck","commit_id":"89fe0396af106193f16eaff758bf9972e969f68c"}],"doc/source/install/configure-pxe.rst":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73d008e46be066ca1d1809278b8d4b364b9d9258","unresolved":true,"context_lines":[{"line_number":538,"context_line":"If you need this dnsmasq instance to co-exist with the OpenStack Networking"},{"line_number":539,"context_line":"service, some measures must be taken to prevent them from clashing over DHCP"},{"line_number":540,"context_line":"requests. One way to do it is to physically separate the inspection network."},{"line_number":541,"context_line":"Another - to configure the :doc:`/admin/inspection/pxe_filter`."},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"Finally, build or download IPA images into"},{"line_number":544,"context_line":"``/tftpboot/ironic-python-agent.kernel`` and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"2d04b5d7_e1c3dfd1","line":541,"updated":"2024-03-11 14:57:27.000000000","message":"Maybe worthwhile to detail the overall pattern, use of default vlans so you learn about the host from initial introspection and keep it moving around from there.","commit_id":"89fe0396af106193f16eaff758bf9972e969f68c"}],"ironic/cmd/pxe_filter.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"6a4cad63ec16df488b72eba54288e81ced3a19a8","unresolved":true,"context_lines":[{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sys"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":8,"id":"14f6d4d3_59fa0e8f","line":12,"updated":"2024-02-27 16:40:32.000000000","message":"monkey_patch eventlet here","commit_id":"e0de97ad33f30c70a3cb694d564eb995aa923359"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b52c8488983c7bfa64f52449056ca8533b74ee65","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import sys"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":8,"id":"e658f229_00a84950","line":12,"in_reply_to":"14f6d4d3_59fa0e8f","updated":"2024-02-27 16:48:17.000000000","message":"this is wrong","commit_id":"e0de97ad33f30c70a3cb694d564eb995aa923359"}],"ironic/conf/inspector.py":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"7a9f4adb9b778675a964519c82f00706de858a56","unresolved":true,"context_lines":[{"line_number":164,"context_line":"                      \u0027of the driver. Required.\u0027)),"},{"line_number":165,"context_line":"    cfg.BoolOpt(\u0027purge_dhcp_hostsdir\u0027,"},{"line_number":166,"context_line":"                default\u003dTrue, mutable\u003dTrue,"},{"line_number":167,"context_line":"                help\u003d_(\u0027Purge the hostsdir upon initialization. \u0027"},{"line_number":168,"context_line":"                       \u0027Setting to false should only be performed when the \u0027"},{"line_number":169,"context_line":"                       \u0027deployment of the PXE filter is such that there are \u0027"},{"line_number":170,"context_line":"                       \u0027multiple processes executing inside of the same host \u0027"},{"line_number":171,"context_line":"                       \u0027and namespace. In this case, the operator is \u0027"},{"line_number":172,"context_line":"                       \u0027responsible for setting up a custom cleaning \u0027"},{"line_number":173,"context_line":"                       \u0027facility.\u0027)),"},{"line_number":174,"context_line":"    cfg.ListOpt(\u0027supported_inspect_interfaces\u0027,"},{"line_number":175,"context_line":"                default\u003d[\u0027agent\u0027], mutable\u003dTrue,"},{"line_number":176,"context_line":"                help\u003d_(\"List of inspect interfaces that will be considered \""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ef46746_aab70c1f","line":173,"range":{"start_line":167,"start_character":23,"end_line":173,"end_character":34},"updated":"2024-02-07 14:02:52.000000000","message":"If we purge the directory, we also should SIGHUP the dnsmasq process.\n\n\n\u003e --dhcp-hostsdir\u003d\u003cpath\u003e\n\u003e    This is equivalent to --dhcp-hostsfile, except for the following. \n\u003e    The path MUST be a directory, and not an individual file. \n\u003e    Changed or new files within the directory are read automatically, \n\u003e    without the need to send SIGHUP. **If a file is deleted or changed \n\u003e    after it has been read by dnsmasq, then the host record it\n\u003e    contained will remain until dnsmasq receives a SIGHUP**, or is\n\u003e    restarted; ie host records are only added dynamically. The order\n\u003e    in which the files in a directory are read is not defined. \n\n\nIn the previous implementation we had a way to configure a command that would do that[1], in tripleo we ran with purging disabled because we did not set the reset command. In this implementation you intend to run multiple instances, if one instance does a purge then all dnsmasq instances should ideally be HUP\u0027ed. How do we facilitate that?\n\nI wonder if this should default to False, and the help comment be changed to indicate that if purging is enabled the operator is responsible for HUP\u0027ing dnsmasq?\n\n[1] https://opendev.org/openstack/ironic-inspector/src/branch/master/ironic_inspector/pxe_filter/dnsmasq.py#L73\n[2] https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/deployment/ironic/ironic-inspector-container-puppet.yaml#L327","commit_id":"6706716734d6e1815a0dd5b9b657a1310419f54f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b0703ba6ab2f0d776e12b160a31fe8dcbf234312","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                      \u0027of the driver. Required.\u0027)),"},{"line_number":165,"context_line":"    cfg.BoolOpt(\u0027purge_dhcp_hostsdir\u0027,"},{"line_number":166,"context_line":"                default\u003dTrue, mutable\u003dTrue,"},{"line_number":167,"context_line":"                help\u003d_(\u0027Purge the hostsdir upon initialization. \u0027"},{"line_number":168,"context_line":"                       \u0027Setting to false should only be performed when the \u0027"},{"line_number":169,"context_line":"                       \u0027deployment of the PXE filter is such that there are \u0027"},{"line_number":170,"context_line":"                       \u0027multiple processes executing inside of the same host \u0027"},{"line_number":171,"context_line":"                       \u0027and namespace. In this case, the operator is \u0027"},{"line_number":172,"context_line":"                       \u0027responsible for setting up a custom cleaning \u0027"},{"line_number":173,"context_line":"                       \u0027facility.\u0027)),"},{"line_number":174,"context_line":"    cfg.ListOpt(\u0027supported_inspect_interfaces\u0027,"},{"line_number":175,"context_line":"                default\u003d[\u0027agent\u0027], mutable\u003dTrue,"},{"line_number":176,"context_line":"                help\u003d_(\"List of inspect interfaces that will be considered \""}],"source_content_type":"text/x-python","patch_set":2,"id":"a7026296_20ffc746","line":173,"range":{"start_line":167,"start_character":23,"end_line":173,"end_character":34},"in_reply_to":"9ef46746_aab70c1f","updated":"2024-02-08 12:30:22.000000000","message":"Good point. I\u0027ll remove this functionality completely for now. It\u0027s not hard to do something similar in a systemd unit, and that\u0027s what I\u0027ll put in the docs.","commit_id":"6706716734d6e1815a0dd5b9b657a1310419f54f"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"ce4bb423034c9bd8ab70e825c4fee365e3d52de8","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                      \u0027of the driver. Required.\u0027)),"},{"line_number":165,"context_line":"    cfg.BoolOpt(\u0027purge_dhcp_hostsdir\u0027,"},{"line_number":166,"context_line":"                default\u003dTrue, mutable\u003dTrue,"},{"line_number":167,"context_line":"                help\u003d_(\u0027Purge the hostsdir upon initialization. \u0027"},{"line_number":168,"context_line":"                       \u0027Setting to false should only be performed when the \u0027"},{"line_number":169,"context_line":"                       \u0027deployment of the PXE filter is such that there are \u0027"},{"line_number":170,"context_line":"                       \u0027multiple processes executing inside of the same host \u0027"},{"line_number":171,"context_line":"                       \u0027and namespace. In this case, the operator is \u0027"},{"line_number":172,"context_line":"                       \u0027responsible for setting up a custom cleaning \u0027"},{"line_number":173,"context_line":"                       \u0027facility.\u0027)),"},{"line_number":174,"context_line":"    cfg.ListOpt(\u0027supported_inspect_interfaces\u0027,"},{"line_number":175,"context_line":"                default\u003d[\u0027agent\u0027], mutable\u003dTrue,"},{"line_number":176,"context_line":"                help\u003d_(\"List of inspect interfaces that will be considered \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ebdd02d9_26433560","line":173,"range":{"start_line":167,"start_character":23,"end_line":173,"end_character":34},"in_reply_to":"a7026296_20ffc746","updated":"2024-02-08 13:50:15.000000000","message":"+1 - I like the approach of leaving the purging to the service management system.\nThe docs you added here covers it nicely!","commit_id":"6706716734d6e1815a0dd5b9b657a1310419f54f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"85c1661079fd7f93a30305d72b1cc487c578e19a","unresolved":true,"context_lines":[{"line_number":179,"context_line":"    cfg.IntOpt(\u0027sync_period\u0027,"},{"line_number":180,"context_line":"               default\u003d45, mutable\u003dTrue,"},{"line_number":181,"context_line":"               help\u003d_(\"Period (in seconds) between synchronizing the state \""},{"line_number":182,"context_line":"                      \"if dnsmasq with the database.\")),"},{"line_number":183,"context_line":"]"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e56acfd8_3ceb3734","line":182,"updated":"2024-02-07 15:30:39.000000000","message":"nit: Some sort of scale guidance might be good here. With inspection as is, this has been one of the tunables which is fine for small scale, but anytime someone crosses into medium/large deployments, this is one of the very first tunables touched.","commit_id":"6706716734d6e1815a0dd5b9b657a1310419f54f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"73d008e46be066ca1d1809278b8d4b364b9d9258","unresolved":true,"context_lines":[{"line_number":179,"context_line":"    cfg.IntOpt(\u0027sync_period\u0027,"},{"line_number":180,"context_line":"               default\u003d45, mutable\u003dTrue,"},{"line_number":181,"context_line":"               help\u003d_(\"Period (in seconds) between synchronizing the state \""},{"line_number":182,"context_line":"                      \"if dnsmasq with the database.\")),"},{"line_number":183,"context_line":"]"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e383d773_b77632b0","line":182,"range":{"start_line":182,"start_character":23,"end_line":182,"end_character":26},"updated":"2024-03-11 14:57:27.000000000","message":"s/if/of/","commit_id":"6706716734d6e1815a0dd5b9b657a1310419f54f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b0703ba6ab2f0d776e12b160a31fe8dcbf234312","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    cfg.IntOpt(\u0027sync_period\u0027,"},{"line_number":180,"context_line":"               default\u003d45, mutable\u003dTrue,"},{"line_number":181,"context_line":"               help\u003d_(\"Period (in seconds) between synchronizing the state \""},{"line_number":182,"context_line":"                      \"if dnsmasq with the database.\")),"},{"line_number":183,"context_line":"]"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"cdf2e12c_58b6ad93","line":182,"in_reply_to":"e56acfd8_3ceb3734","updated":"2024-02-08 12:30:22.000000000","message":"I\u0027d leave it up to the documentation (which I intend to add), but also... we cannot really compare. Previously, the periodic sync involved polling Ironic API for all nodes and all ports. This was a much, much heavier process that the 2 database queries we do now.","commit_id":"6706716734d6e1815a0dd5b9b657a1310419f54f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"62b5249ed989fb6ac0d74d5fa8486477ee9ba139","unresolved":true,"context_lines":[{"line_number":171,"context_line":"    cfg.IntOpt(\u0027sync_period\u0027,"},{"line_number":172,"context_line":"               default\u003d45, mutable\u003dTrue,"},{"line_number":173,"context_line":"               help\u003d_(\"Period (in seconds) between synchronizing the state \""},{"line_number":174,"context_line":"                      \"if dnsmasq with the database.\")),"},{"line_number":175,"context_line":"]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"4a5edfb7_d12bf780","line":174,"range":{"start_line":174,"start_character":25,"end_line":174,"end_character":26},"updated":"2024-03-05 13:03:11.000000000","message":"nit: of","commit_id":"89fe0396af106193f16eaff758bf9972e969f68c"}]}
