)]}'
{"doc/source/admin/how_it_works.rst":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"01f554fdf302a1e1023e984760f5d92c4e7cbda1","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Make sure your DHCP environment is set to boot IPA by default."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"An alternative, or potentially useful tool for operators may be the"},{"line_number":64,"context_line":"``ironic-collect-introspection-data`` command that is installed with"},{"line_number":65,"context_line":"the agent. This command triggers publishing to ironic inspector."},{"line_number":66,"context_line":"For example::"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    ironic-collect-introspection-data --inspection_callback_url http://IP:5050/v1/continue"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Alternatively, this command may also be used with multicast DNS"},{"line_number":71,"context_line":"functionality to identify the `Ironic Inspector`_ service endpoint."},{"line_number":72,"context_line":"For example::"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    ironic-collect-introspection-data --inspection_callback_url mdns"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":".. _Ironic Inspector: https://docs.openstack.org/ironic-inspector/"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_1953376d","line":74,"range":{"start_line":63,"start_character":0,"end_line":74,"end_character":68},"updated":"2019-06-26 10:12:14.000000000","message":"For my understanding: publishing to the inspector from an active node would require the agent to be installed inside the physical instance, right? If yes, it may be good to mention this explicitly so operators know what to do. If no, then we may need another sentence here as well ;)","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Make sure your DHCP environment is set to boot IPA by default."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"An alternative, or potentially useful tool for operators may be the"},{"line_number":64,"context_line":"``ironic-collect-introspection-data`` command that is installed with"},{"line_number":65,"context_line":"the agent. This command triggers publishing to ironic inspector."},{"line_number":66,"context_line":"For example::"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    ironic-collect-introspection-data --inspection_callback_url http://IP:5050/v1/continue"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Alternatively, this command may also be used with multicast DNS"},{"line_number":71,"context_line":"functionality to identify the `Ironic Inspector`_ service endpoint."},{"line_number":72,"context_line":"For example::"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    ironic-collect-introspection-data --inspection_callback_url mdns"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":".. _Ironic Inspector: https://docs.openstack.org/ironic-inspector/"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fb8cfa7_9ac83022","line":74,"range":{"start_line":63,"start_character":0,"end_line":74,"end_character":68},"in_reply_to":"9fb8cfa7_1953376d","updated":"2019-07-02 21:06:16.000000000","message":"Oh yes, that does make sense!","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f34880a6eddf120dbf1a241043e86a698f9cfac2","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Make sure your DHCP environment is set to boot IPA by default."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"For the cases where the infrastucture operator and cloud user are the same,"},{"line_number":64,"context_line":"an additional tool exists that can be installed along side the agent inside"},{"line_number":65,"context_line":"a running instance. This is the ``ironic-collect-introspection-data``"},{"line_number":66,"context_line":"command which allows for a node in ``ACTIVE`` state to publish updated"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_af736615","line":63,"range":{"start_line":63,"start_character":24,"end_line":63,"end_character":37},"updated":"2019-07-02 09:58:45.000000000","message":"nit: infrastructure","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Make sure your DHCP environment is set to boot IPA by default."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"For the cases where the infrastucture operator and cloud user are the same,"},{"line_number":64,"context_line":"an additional tool exists that can be installed along side the agent inside"},{"line_number":65,"context_line":"a running instance. This is the ``ironic-collect-introspection-data``"},{"line_number":66,"context_line":"command which allows for a node in ``ACTIVE`` state to publish updated"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_f00ff12c","line":63,"range":{"start_line":63,"start_character":24,"end_line":63,"end_character":37},"in_reply_to":"9fb8cfa7_af736615","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"56f74b23f77a4bdaa842f8f4160df949e1f0d84d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Make sure your DHCP environment is set to boot IPA by default."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"For the cases where the infrastucture operator and cloud user are the same,"},{"line_number":64,"context_line":"an additional tool exists that can be installed along side the agent inside"},{"line_number":65,"context_line":"a running instance. This is the ``ironic-collect-introspection-data``"},{"line_number":66,"context_line":"command which allows for a node in ``ACTIVE`` state to publish updated"},{"line_number":67,"context_line":"introspection data to ironic-inspector. This ability requires ironic-inspector"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_0c6640ee","line":64,"range":{"start_line":64,"start_character":48,"end_line":64,"end_character":58},"updated":"2019-07-02 08:13:44.000000000","message":"nit: alongside","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Make sure your DHCP environment is set to boot IPA by default."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"For the cases where the infrastucture operator and cloud user are the same,"},{"line_number":64,"context_line":"an additional tool exists that can be installed along side the agent inside"},{"line_number":65,"context_line":"a running instance. This is the ``ironic-collect-introspection-data``"},{"line_number":66,"context_line":"command which allows for a node in ``ACTIVE`` state to publish updated"},{"line_number":67,"context_line":"introspection data to ironic-inspector. This ability requires ironic-inspector"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_100de534","line":64,"range":{"start_line":64,"start_character":48,"end_line":64,"end_character":58},"in_reply_to":"9fb8cfa7_0c6640ee","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"56f74b23f77a4bdaa842f8f4160df949e1f0d84d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"a running instance. This is the ``ironic-collect-introspection-data``"},{"line_number":66,"context_line":"command which allows for a node in ``ACTIVE`` state to publish updated"},{"line_number":67,"context_line":"introspection data to ironic-inspector. This ability requires ironic-inspector"},{"line_number":68,"context_line":"to be configured with ``[procesing]permit_active_introspection`` set to"},{"line_number":69,"context_line":"``True``. For example::"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    ironic-collect-introspection-data --inspection_callback_url http://IP:5050/v1/continue"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_6c9c9cbf","line":68,"range":{"start_line":68,"start_character":25,"end_line":68,"end_character":34},"updated":"2019-07-02 08:13:44.000000000","message":"processing","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":65,"context_line":"a running instance. This is the ``ironic-collect-introspection-data``"},{"line_number":66,"context_line":"command which allows for a node in ``ACTIVE`` state to publish updated"},{"line_number":67,"context_line":"introspection data to ironic-inspector. This ability requires ironic-inspector"},{"line_number":68,"context_line":"to be configured with ``[procesing]permit_active_introspection`` set to"},{"line_number":69,"context_line":"``True``. For example::"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    ironic-collect-introspection-data --inspection_callback_url http://IP:5050/v1/continue"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_d0166d4a","line":68,"range":{"start_line":68,"start_character":25,"end_line":68,"end_character":34},"in_reply_to":"9fb8cfa7_6c9c9cbf","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"f34880a6eddf120dbf1a241043e86a698f9cfac2","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    ironic-collect-introspection-data --inspection_callback_url mdns"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"An additional daemon mode may be useful for some operators who wish to receieve"},{"line_number":80,"context_line":"regular updates, in the form of the ``[DEFAULT]introspection_daemon`` boolean"},{"line_number":81,"context_line":"configuration option."},{"line_number":82,"context_line":"For example::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_6f632e43","line":79,"range":{"start_line":79,"start_character":71,"end_line":79,"end_character":79},"updated":"2019-07-02 09:58:45.000000000","message":"nit: receive","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    ironic-collect-introspection-data --inspection_callback_url mdns"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"An additional daemon mode may be useful for some operators who wish to receieve"},{"line_number":80,"context_line":"regular updates, in the form of the ``[DEFAULT]introspection_daemon`` boolean"},{"line_number":81,"context_line":"configuration option."},{"line_number":82,"context_line":"For example::"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_702541ae","line":79,"range":{"start_line":79,"start_character":71,"end_line":79,"end_character":79},"in_reply_to":"9fb8cfa7_6f632e43","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b643c01cae2f8bae19d206c05f1a2e04570ba3ca","unresolved":false,"context_lines":[{"line_number":86,"context_line":"The above command will attempt to connect to introspection and will then enter"},{"line_number":87,"context_line":"a loop to publish every 300 seconds. This can be tuned with the"},{"line_number":88,"context_line":"``[DEFAULT]introspection_daemon_post_interval`` configuration option."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. _Ironic Inspector: https://docs.openstack.org/ironic-inspector/"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Hardware Inventory"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_3884675e","line":89,"updated":"2019-07-08 05:39:35.000000000","message":"So the user has to login and execute the command manually at the moment, do we have plans to add the support to the diskimage_builder? But I don\u0027t think DIB would like to have another element for additional command, maybe we need some words on the tweaking of ramdisk.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81b8dd0897803a8b0f77d18bcf3c2137c93e4fc4","unresolved":false,"context_lines":[{"line_number":86,"context_line":"The above command will attempt to connect to introspection and will then enter"},{"line_number":87,"context_line":"a loop to publish every 300 seconds. This can be tuned with the"},{"line_number":88,"context_line":"``[DEFAULT]introspection_daemon_post_interval`` configuration option."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. _Ironic Inspector: https://docs.openstack.org/ironic-inspector/"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Hardware Inventory"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7faddb67_3f68c6f3","line":89,"in_reply_to":"7faddb67_3884675e","updated":"2019-07-08 14:35:08.000000000","message":"If we consider the user to be more of an adminsitrator user, that would need to be a service that DIB could invoke for a user-image.  I think that is out of scope for this immediate push to try and at least have the basic functionality available.   Nothing needs to be tweeked or change wit our existing ramdisk.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"}],"ironic_python_agent/cmd/inspect.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ac371be14c1214e293519797c51ade7fc73c882b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\"Entrypoint for IronicPythonAgent.\"\"\""},{"line_number":29,"context_line":"    log.register_options(CONF)"},{"line_number":30,"context_line":"    CONF(args\u003dsys.argv[1:])"},{"line_number":31,"context_line":"    # Debug option comes from oslo.log, allow overriding it via kernel cmdline"},{"line_number":32,"context_line":"    ipa_debug \u003d config.APARAMS.get(\u0027ipa-debug\u0027)"},{"line_number":33,"context_line":"    if ipa_debug is not None:"},{"line_number":34,"context_line":"        ipa_debug \u003d strutils.bool_from_string(ipa_debug)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_d8098b31","line":31,"updated":"2019-06-19 08:04:58.000000000","message":"I don\u0027t think it\u0027s a good idea for something that is not expected to be run on a ramdisk.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\"Entrypoint for IronicPythonAgent.\"\"\""},{"line_number":29,"context_line":"    log.register_options(CONF)"},{"line_number":30,"context_line":"    CONF(args\u003dsys.argv[1:])"},{"line_number":31,"context_line":"    # Debug option comes from oslo.log, allow overriding it via kernel cmdline"},{"line_number":32,"context_line":"    ipa_debug \u003d config.APARAMS.get(\u0027ipa-debug\u0027)"},{"line_number":33,"context_line":"    if ipa_debug is not None:"},{"line_number":34,"context_line":"        ipa_debug \u003d strutils.bool_from_string(ipa_debug)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_f8ed5db7","line":31,"in_reply_to":"9fb8cfa7_d8098b31","updated":"2019-06-19 23:11:53.000000000","message":"I concur.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"}],"ironic_python_agent/config.py":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"01f554fdf302a1e1023e984760f5d92c4e7cbda1","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    cfg.BoolOpt(\u0027introspection_daemon\u0027,"},{"line_number":221,"context_line":"                default\u003dFalse,"},{"line_number":222,"context_line":"                help\u003d\u0027When the ``ironic-collect-introspection-data`` \u0027"},{"line_number":223,"context_line":"                     \u0027command is executed, if to continue running as \u0027"},{"line_number":224,"context_line":"                     \u0027a background process and continue to post data \u0027"},{"line_number":225,"context_line":"                     \u0027to the bare metal inspection service.\u0027),"},{"line_number":226,"context_line":"    cfg.IntOpt(\u0027introspection_daemon_post_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_19d817ed","line":223,"range":{"start_line":223,"start_character":43,"end_line":223,"end_character":57},"updated":"2019-06-26 10:12:14.000000000","message":"nit: s/if to//","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    cfg.BoolOpt(\u0027introspection_daemon\u0027,"},{"line_number":221,"context_line":"                default\u003dFalse,"},{"line_number":222,"context_line":"                help\u003d\u0027When the ``ironic-collect-introspection-data`` \u0027"},{"line_number":223,"context_line":"                     \u0027command is executed, if to continue running as \u0027"},{"line_number":224,"context_line":"                     \u0027a background process and continue to post data \u0027"},{"line_number":225,"context_line":"                     \u0027to the bare metal inspection service.\u0027),"},{"line_number":226,"context_line":"    cfg.IntOpt(\u0027introspection_daemon_post_interval\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_3aaee42d","line":223,"range":{"start_line":223,"start_character":43,"end_line":223,"end_character":57},"in_reply_to":"9fb8cfa7_19d817ed","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"01f554fdf302a1e1023e984760f5d92c4e7cbda1","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                     \u0027to the bare metal inspection service.\u0027),"},{"line_number":226,"context_line":"    cfg.IntOpt(\u0027introspection_daemon_post_interval\u0027,"},{"line_number":227,"context_line":"               default\u003d300,"},{"line_number":228,"context_line":"               help\u003d\u0027The interval in seconds which to transmit data to \u0027"},{"line_number":229,"context_line":"                    \u0027the bare metal introspection service when the \u0027"},{"line_number":230,"context_line":"                    \u0027``ironic-collect-introspection-data`` program is \u0027"},{"line_number":231,"context_line":"                    \u0027executing in daemon mode.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_39cddb2f","line":228,"range":{"start_line":228,"start_character":45,"end_line":228,"end_character":50},"updated":"2019-06-26 10:12:14.000000000","message":"nit: \"by which\"?","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                     \u0027to the bare metal inspection service.\u0027),"},{"line_number":226,"context_line":"    cfg.IntOpt(\u0027introspection_daemon_post_interval\u0027,"},{"line_number":227,"context_line":"               default\u003d300,"},{"line_number":228,"context_line":"               help\u003d\u0027The interval in seconds which to transmit data to \u0027"},{"line_number":229,"context_line":"                    \u0027the bare metal introspection service when the \u0027"},{"line_number":230,"context_line":"                    \u0027``ironic-collect-introspection-data`` program is \u0027"},{"line_number":231,"context_line":"                    \u0027executing in daemon mode.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_daa8e820","line":228,"range":{"start_line":228,"start_character":45,"end_line":228,"end_character":50},"in_reply_to":"9fb8cfa7_39cddb2f","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b643c01cae2f8bae19d206c05f1a2e04570ba3ca","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                    \u0027Default is to not present any client certificates to \u0027"},{"line_number":219,"context_line":"                    \u0027the server.\u0027),"},{"line_number":220,"context_line":"    cfg.BoolOpt(\u0027introspection_daemon\u0027,"},{"line_number":221,"context_line":"                default\u003dFalse,"},{"line_number":222,"context_line":"                help\u003d\u0027When the ``ironic-collect-introspection-data`` \u0027"},{"line_number":223,"context_line":"                     \u0027command is executed, continue running as \u0027"},{"line_number":224,"context_line":"                     \u0027a background process and continue to post data \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_7802dfb6","line":221,"updated":"2019-07-08 05:39:35.000000000","message":"Controls whether the script is a daemon by a configuration option seems a challenging task for consumers of this feature. Actually we can have a daemon script there (easier to be deployed as a service), and a one-shot script for the single action (we could also refactor the inspect() into an IPA command, so that we can directly trigger via API).","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81b8dd0897803a8b0f77d18bcf3c2137c93e4fc4","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                    \u0027Default is to not present any client certificates to \u0027"},{"line_number":219,"context_line":"                    \u0027the server.\u0027),"},{"line_number":220,"context_line":"    cfg.BoolOpt(\u0027introspection_daemon\u0027,"},{"line_number":221,"context_line":"                default\u003dFalse,"},{"line_number":222,"context_line":"                help\u003d\u0027When the ``ironic-collect-introspection-data`` \u0027"},{"line_number":223,"context_line":"                     \u0027command is executed, continue running as \u0027"},{"line_number":224,"context_line":"                     \u0027a background process and continue to post data \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_c20f552c","line":221,"in_reply_to":"7faddb67_7802dfb6","updated":"2019-07-08 14:35:08.000000000","message":"Well, configuration option or command line option. Both are available, and if a user incorporates this via a container or a dib image into their environment they can execute it with the proper option.\n\nRefectoring this into being triggered by an IPA command doesn\u0027t seem to mix well with the overall idea because we don\u0027t want an IPA service running on a node an administrator wants to update introspection data for.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"}],"ironic_python_agent/inspect.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ac371be14c1214e293519797c51ade7fc73c882b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class IronicInspection(base.ExecuteCommandMixin):"},{"line_number":23,"context_line":"    \"\"\"Class for manual inspection functionality.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def __init__(self, hardware_initialization_delay\u003d0):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_78065f23","line":22,"updated":"2019-06-19 08:04:58.000000000","message":"No point in inheriting this from a command, I think.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":19,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class IronicInspection(base.ExecuteCommandMixin):"},{"line_number":23,"context_line":"    \"\"\"Class for manual inspection functionality.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def __init__(self, hardware_initialization_delay\u003d0):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_588269ca","line":22,"in_reply_to":"9fb8cfa7_78065f23","updated":"2019-06-19 23:11:53.000000000","message":"I\u0027m kind of on the fence. The plus side of the mixin is the common config options are already available...","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ac371be14c1214e293519797c51ade7fc73c882b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class IronicInspection(base.ExecuteCommandMixin):"},{"line_number":23,"context_line":"    \"\"\"Class for manual inspection functionality.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def __init__(self, hardware_initialization_delay\u003d0):"},{"line_number":26,"context_line":"        super(IronicInspection, self).__init__()"},{"line_number":27,"context_line":"        if bool(cfg.CONF.keyfile) !\u003d bool(cfg.CONF.certfile):"},{"line_number":28,"context_line":"            LOG.warning(\"Only one of \u0027keyfile\u0027 and \u0027certfile\u0027 options is \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_98031310","line":25,"updated":"2019-06-19 08:04:58.000000000","message":"the parameter is not used","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class IronicInspection(base.ExecuteCommandMixin):"},{"line_number":23,"context_line":"    \"\"\"Class for manual inspection functionality.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def __init__(self, hardware_initialization_delay\u003d0):"},{"line_number":26,"context_line":"        super(IronicInspection, self).__init__()"},{"line_number":27,"context_line":"        if bool(cfg.CONF.keyfile) !\u003d bool(cfg.CONF.certfile):"},{"line_number":28,"context_line":"            LOG.warning(\"Only one of \u0027keyfile\u0027 and \u0027certfile\u0027 options is \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_b84e0594","line":25,"in_reply_to":"9fb8cfa7_98031310","updated":"2019-06-19 23:11:53.000000000","message":"Done","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"8abd6308f0de369b07c95b8eba1c04ae4671fd99","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def run(self):"},{"line_number":32,"context_line":"        \"\"\"Run Inspection.\"\"\""},{"line_number":33,"context_line":"        # Inspection should be started before call to lookup, otherwise"},{"line_number":34,"context_line":"        # lookup will fail due to unknown MAC."},{"line_number":35,"context_line":"        uuid \u003d None"},{"line_number":36,"context_line":"        if cfg.CONF.inspection_callback_url:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_d6b641dd","line":33,"range":{"start_line":33,"start_character":54,"end_line":33,"end_character":60},"updated":"2019-06-19 03:04:48.000000000","message":"It seems we can actually skip lookup through kernel command.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def run(self):"},{"line_number":32,"context_line":"        \"\"\"Run Inspection.\"\"\""},{"line_number":33,"context_line":"        # Inspection should be started before call to lookup, otherwise"},{"line_number":34,"context_line":"        # lookup will fail due to unknown MAC."},{"line_number":35,"context_line":"        uuid \u003d None"},{"line_number":36,"context_line":"        if cfg.CONF.inspection_callback_url:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_187631da","line":33,"range":{"start_line":33,"start_character":54,"end_line":33,"end_character":60},"in_reply_to":"9fb8cfa7_d6b641dd","updated":"2019-06-19 23:11:53.000000000","message":"Removing the note since it was carried from agent.py.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ac371be14c1214e293519797c51ade7fc73c882b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        # Inspection should be started before call to lookup, otherwise"},{"line_number":34,"context_line":"        # lookup will fail due to unknown MAC."},{"line_number":35,"context_line":"        uuid \u003d None"},{"line_number":36,"context_line":"        if cfg.CONF.inspection_callback_url:"},{"line_number":37,"context_line":"            uuid \u003d inspector.inspect()"},{"line_number":38,"context_line":"            print(\u0027uuid %(uuid)s sent\u0027 % {\u0027uuid\u0027: uuid})"},{"line_number":39,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_3bfea105","line":36,"updated":"2019-06-19 08:04:58.000000000","message":"Should we allow mdns here?","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        # Inspection should be started before call to lookup, otherwise"},{"line_number":34,"context_line":"        # lookup will fail due to unknown MAC."},{"line_number":35,"context_line":"        uuid \u003d None"},{"line_number":36,"context_line":"        if cfg.CONF.inspection_callback_url:"},{"line_number":37,"context_line":"            uuid \u003d inspector.inspect()"},{"line_number":38,"context_line":"            print(\u0027uuid %(uuid)s sent\u0027 % {\u0027uuid\u0027: uuid})"},{"line_number":39,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_f81b1dc7","line":36,"in_reply_to":"9fb8cfa7_3bfea105","updated":"2019-06-19 23:11:53.000000000","message":"Or allow automatically to try mdns? I guess I could lift the code for the main endpoint.  I think that makes sense.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ac371be14c1214e293519797c51ade7fc73c882b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        uuid \u003d None"},{"line_number":36,"context_line":"        if cfg.CONF.inspection_callback_url:"},{"line_number":37,"context_line":"            uuid \u003d inspector.inspect()"},{"line_number":38,"context_line":"            print(\u0027uuid %(uuid)s sent\u0027 % {\u0027uuid\u0027: uuid})"},{"line_number":39,"context_line":"        else:"},{"line_number":40,"context_line":"            LOG.error(\u0027A URL for ironic-inspector was not found\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_5b03550e","line":38,"updated":"2019-06-19 08:04:58.000000000","message":"maybe expand? also status messages should go to stderr or to logging.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        uuid \u003d None"},{"line_number":36,"context_line":"        if cfg.CONF.inspection_callback_url:"},{"line_number":37,"context_line":"            uuid \u003d inspector.inspect()"},{"line_number":38,"context_line":"            print(\u0027uuid %(uuid)s sent\u0027 % {\u0027uuid\u0027: uuid})"},{"line_number":39,"context_line":"        else:"},{"line_number":40,"context_line":"            LOG.error(\u0027A URL for ironic-inspector was not found\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_d87f39a9","line":38,"in_reply_to":"9fb8cfa7_5b03550e","updated":"2019-06-19 23:11:53.000000000","message":"Yeah, I\u0027m thinking it should exit 0 if happy so it is kind of pointless otherwise. Any exception should result in a non-zero exit code.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ac371be14c1214e293519797c51ade7fc73c882b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            uuid \u003d inspector.inspect()"},{"line_number":38,"context_line":"            print(\u0027uuid %(uuid)s sent\u0027 % {\u0027uuid\u0027: uuid})"},{"line_number":39,"context_line":"        else:"},{"line_number":40,"context_line":"            LOG.error(\u0027A URL for ironic-inspector was not found\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_fb07a917","line":40,"updated":"2019-06-19 08:04:58.000000000","message":"I think this should be an exception.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            uuid \u003d inspector.inspect()"},{"line_number":38,"context_line":"            print(\u0027uuid %(uuid)s sent\u0027 % {\u0027uuid\u0027: uuid})"},{"line_number":39,"context_line":"        else:"},{"line_number":40,"context_line":"            LOG.error(\u0027A URL for ironic-inspector was not found\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_f87a3db8","line":40,"in_reply_to":"9fb8cfa7_fb07a917","updated":"2019-06-19 23:11:53.000000000","message":"Done","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"01f554fdf302a1e1023e984760f5d92c4e7cbda1","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"            inspector.inspect()"},{"line_number":42,"context_line":"            if not daemon_mode:"},{"line_number":43,"context_line":"                # No reason to continue on if we\u0027re in daemon mode."},{"line_number":44,"context_line":"                return"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"            self.reader, self.writer \u003d os.pipe()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_79f03368","line":43,"range":{"start_line":43,"start_character":43,"end_line":43,"end_character":45},"updated":"2019-06-26 10:12:14.000000000","message":"nit: s/if/unless/ ?","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"            inspector.inspect()"},{"line_number":42,"context_line":"            if not daemon_mode:"},{"line_number":43,"context_line":"                # No reason to continue on if we\u0027re in daemon mode."},{"line_number":44,"context_line":"                return"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"            self.reader, self.writer \u003d os.pipe()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_da7d48b2","line":43,"range":{"start_line":43,"start_character":43,"end_line":43,"end_character":45},"in_reply_to":"9fb8cfa7_79f03368","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"01f554fdf302a1e1023e984760f5d92c4e7cbda1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                        inspector.inspect()"},{"line_number":60,"context_line":"                    except errors.InspectionError:"},{"line_number":61,"context_line":"                        # Failures happen, no reason to exit as"},{"line_number":62,"context_line":"                        # the failure could be itermittant."},{"line_number":63,"context_line":"                        pass"},{"line_number":64,"context_line":"                    except exception.ServiceLookupFailure as e:"},{"line_number":65,"context_line":"                        # Likley a mDNS lookup failure. We should"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_99516739","line":62,"range":{"start_line":62,"start_character":47,"end_line":62,"end_character":58},"updated":"2019-06-26 10:12:14.000000000","message":"nit: intermittent","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                        inspector.inspect()"},{"line_number":60,"context_line":"                    except errors.InspectionError:"},{"line_number":61,"context_line":"                        # Failures happen, no reason to exit as"},{"line_number":62,"context_line":"                        # the failure could be itermittant."},{"line_number":63,"context_line":"                        pass"},{"line_number":64,"context_line":"                    except exception.ServiceLookupFailure as e:"},{"line_number":65,"context_line":"                        # Likley a mDNS lookup failure. We should"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_fa784cc1","line":62,"range":{"start_line":62,"start_character":47,"end_line":62,"end_character":58},"in_reply_to":"9fb8cfa7_99516739","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"01f554fdf302a1e1023e984760f5d92c4e7cbda1","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                        # the failure could be itermittant."},{"line_number":63,"context_line":"                        pass"},{"line_number":64,"context_line":"                    except exception.ServiceLookupFailure as e:"},{"line_number":65,"context_line":"                        # Likley a mDNS lookup failure. We should"},{"line_number":66,"context_line":"                        # keep retrying."},{"line_number":67,"context_line":"                        LOG.error(\u0027Error looking up introspection \u0027"},{"line_number":68,"context_line":"                                  \u0027endpoint: %(err)s\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_59476f78","line":65,"range":{"start_line":65,"start_character":26,"end_line":65,"end_character":32},"updated":"2019-06-26 10:12:14.000000000","message":"nit: Likely","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                        # the failure could be itermittant."},{"line_number":63,"context_line":"                        pass"},{"line_number":64,"context_line":"                    except exception.ServiceLookupFailure as e:"},{"line_number":65,"context_line":"                        # Likley a mDNS lookup failure. We should"},{"line_number":66,"context_line":"                        # keep retrying."},{"line_number":67,"context_line":"                        LOG.error(\u0027Error looking up introspection \u0027"},{"line_number":68,"context_line":"                                  \u0027endpoint: %(err)s\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_9a4d909b","line":65,"range":{"start_line":65,"start_character":26,"end_line":65,"end_character":32},"in_reply_to":"9fb8cfa7_59476f78","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"b5f0feceef49e5f6f2c1f7cd23da2b14ba498b81"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"56f74b23f77a4bdaa842f8f4160df949e1f0d84d","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def run(self):"},{"line_number":82,"context_line":"        \"\"\"Run Inspection.\"\"\""},{"line_number":83,"context_line":"        if cfg.CONF.inspection_callback_url:"},{"line_number":84,"context_line":"            self._run()"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            cfg.CONF.set_override(\u0027inspection_callback_url\u0027, \u0027mdns\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_8cd6b04e","line":83,"updated":"2019-07-02 08:13:44.000000000","message":"since we\u0027re allowing and falling back anyway to mdns, maybe save a couple of lines using an \"if not\" here and just put self._run() outside at the end ?","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f3638e2e57a44ade9402508416e0f2e4a4284f40","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def run(self):"},{"line_number":82,"context_line":"        \"\"\"Run Inspection.\"\"\""},{"line_number":83,"context_line":"        if cfg.CONF.inspection_callback_url:"},{"line_number":84,"context_line":"            self._run()"},{"line_number":85,"context_line":"        else:"},{"line_number":86,"context_line":"            cfg.CONF.set_override(\u0027inspection_callback_url\u0027, \u0027mdns\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_301fc95c","line":83,"in_reply_to":"9fb8cfa7_8cd6b04e","updated":"2019-07-02 21:06:16.000000000","message":"Done","commit_id":"a07d891ba7e5aeac6eeb47592ce148328a00b91b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b643c01cae2f8bae19d206c05f1a2e04570ba3ca","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    # TODO(TheJulia): It would likely be good to introduce"},{"line_number":54,"context_line":"                    # some jitter into this at some point..."},{"line_number":55,"context_line":"                    if p.poll(post_interval * 1000):"},{"line_number":56,"context_line":"                        if os.read(self.reader, 1).decode() \u003d\u003d \u0027a\u0027:"},{"line_number":57,"context_line":"                            break"},{"line_number":58,"context_line":"                    try:"},{"line_number":59,"context_line":"                        inspector.inspect()"},{"line_number":60,"context_line":"                    except errors.InspectionError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_3b84615e","line":57,"range":{"start_line":56,"start_character":24,"end_line":57,"end_character":33},"updated":"2019-07-08 05:39:35.000000000","message":"I think we need to remove it, it doesn\u0027t work as there is no code path to write the \u0027a\u0027.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81b8dd0897803a8b0f77d18bcf3c2137c93e4fc4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    # TODO(TheJulia): It would likely be good to introduce"},{"line_number":54,"context_line":"                    # some jitter into this at some point..."},{"line_number":55,"context_line":"                    if p.poll(post_interval * 1000):"},{"line_number":56,"context_line":"                        if os.read(self.reader, 1).decode() \u003d\u003d \u0027a\u0027:"},{"line_number":57,"context_line":"                            break"},{"line_number":58,"context_line":"                    try:"},{"line_number":59,"context_line":"                        inspector.inspect()"},{"line_number":60,"context_line":"                    except errors.InspectionError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_623541da","line":57,"range":{"start_line":56,"start_character":24,"end_line":57,"end_character":33},"in_reply_to":"7faddb67_3b84615e","updated":"2019-07-08 14:35:08.000000000","message":"But you have to use something to loop on the buffer. This is identical to what IPA does presently.. And I\u0027m fairly sure I\u0027ve seen this pattern elsewhere.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2222817462112ef4fe6469fea11632f75a9cbdcf","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    # TODO(TheJulia): It would likely be good to introduce"},{"line_number":54,"context_line":"                    # some jitter into this at some point..."},{"line_number":55,"context_line":"                    if p.poll(post_interval * 1000):"},{"line_number":56,"context_line":"                        if os.read(self.reader, 1).decode() \u003d\u003d \u0027a\u0027:"},{"line_number":57,"context_line":"                            break"},{"line_number":58,"context_line":"                    try:"},{"line_number":59,"context_line":"                        inspector.inspect()"},{"line_number":60,"context_line":"                    except errors.InspectionError:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_624f81bd","line":57,"range":{"start_line":56,"start_character":24,"end_line":57,"end_character":33},"in_reply_to":"7faddb67_623541da","updated":"2019-07-08 15:06:54.000000000","message":"Ack, it makes sense if you consider it\u0027s a pattern, though I think sleep is fine here.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b643c01cae2f8bae19d206c05f1a2e04570ba3ca","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                    except errors.InspectionError:"},{"line_number":61,"context_line":"                        # Failures happen, no reason to exit as"},{"line_number":62,"context_line":"                        # the failure could be intermittent."},{"line_number":63,"context_line":"                        pass"},{"line_number":64,"context_line":"                    except exception.ServiceLookupFailure as e:"},{"line_number":65,"context_line":"                        # Likely a mDNS lookup failure. We should"},{"line_number":66,"context_line":"                        # keep retrying."}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_f856cf06","line":63,"updated":"2019-07-08 05:39:35.000000000","message":"maybe log an error here?","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81b8dd0897803a8b0f77d18bcf3c2137c93e4fc4","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                    except errors.InspectionError:"},{"line_number":61,"context_line":"                        # Failures happen, no reason to exit as"},{"line_number":62,"context_line":"                        # the failure could be intermittent."},{"line_number":63,"context_line":"                        pass"},{"line_number":64,"context_line":"                    except exception.ServiceLookupFailure as e:"},{"line_number":65,"context_line":"                        # Likely a mDNS lookup failure. We should"},{"line_number":66,"context_line":"                        # keep retrying."}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_a2401937","line":63,"in_reply_to":"7faddb67_f856cf06","updated":"2019-07-08 14:35:08.000000000","message":"Good point. Will add.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b643c01cae2f8bae19d206c05f1a2e04570ba3ca","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                        LOG.error(\u0027Error looking up introspection \u0027"},{"line_number":68,"context_line":"                                  \u0027endpoint: %(err)s\u0027,"},{"line_number":69,"context_line":"                                  {\u0027err\u0027: e})"},{"line_number":70,"context_line":"                        pass"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"            finally:"},{"line_number":73,"context_line":"                os.close(self.reader)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_d82193b6","line":70,"range":{"start_line":70,"start_character":24,"end_line":70,"end_character":28},"updated":"2019-07-08 05:39:35.000000000","message":"nit: not required","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7c30a9386dc5a16051f00b45ddf6bf63febc1822","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                        LOG.error(\u0027Error looking up introspection \u0027"},{"line_number":68,"context_line":"                                  \u0027endpoint: %(err)s\u0027,"},{"line_number":69,"context_line":"                                  {\u0027err\u0027: e})"},{"line_number":70,"context_line":"                        pass"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"            finally:"},{"line_number":73,"context_line":"                os.close(self.reader)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_a2f819c4","line":70,"range":{"start_line":70,"start_character":24,"end_line":70,"end_character":28},"in_reply_to":"7faddb67_d82193b6","updated":"2019-07-08 14:44:32.000000000","message":"Done","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"}],"ironic_python_agent/inspector.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b643c01cae2f8bae19d206c05f1a2e04570ba3ca","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    if resp is None:"},{"line_number":107,"context_line":"        raise errors.InspectionError(\u0027stopping inspection, as inspector \u0027"},{"line_number":108,"context_line":"                                     \u0027returned an error\u0027)"},{"line_number":109,"context_line":"        return"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    LOG.info(\u0027inspection finished successfully\u0027)"},{"line_number":112,"context_line":"    return resp.get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_560d753c","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":14},"updated":"2019-07-08 05:39:35.000000000","message":"nit: not required.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7c30a9386dc5a16051f00b45ddf6bf63febc1822","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    if resp is None:"},{"line_number":107,"context_line":"        raise errors.InspectionError(\u0027stopping inspection, as inspector \u0027"},{"line_number":108,"context_line":"                                     \u0027returned an error\u0027)"},{"line_number":109,"context_line":"        return"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    LOG.info(\u0027inspection finished successfully\u0027)"},{"line_number":112,"context_line":"    return resp.get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_828e3d76","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":14},"in_reply_to":"7faddb67_560d753c","updated":"2019-07-08 14:44:32.000000000","message":"Done","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"}],"releasenotes/notes/manual-introspection-b04b5c25f5e004ac.yaml":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"b643c01cae2f8bae19d206c05f1a2e04570ba3ca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a new command ``ironic-collect-introspection-data`` to enable"},{"line_number":5,"context_line":"    manually publishing into the ``baremetal-introspection`` service."},{"line_number":6,"context_line":"    Executing this command on a system unknown to the Bare Metal service"},{"line_number":7,"context_line":"    will likely result in the machine becoming registered to Ironic, and"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7faddb67_384d4772","line":4,"range":{"start_line":4,"start_character":15,"end_line":4,"end_character":22},"updated":"2019-07-08 05:39:35.000000000","message":"urh, when I first saw the word I was thinking about IPA command.. maybe \"script\" is less confusing.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81b8dd0897803a8b0f77d18bcf3c2137c93e4fc4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a new command ``ironic-collect-introspection-data`` to enable"},{"line_number":5,"context_line":"    manually publishing into the ``baremetal-introspection`` service."},{"line_number":6,"context_line":"    Executing this command on a system unknown to the Bare Metal service"},{"line_number":7,"context_line":"    will likely result in the machine becoming registered to Ironic, and"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7faddb67_42a045f5","line":4,"range":{"start_line":4,"start_character":15,"end_line":4,"end_character":22},"in_reply_to":"7faddb67_384d4772","updated":"2019-07-08 14:35:08.000000000","message":"Maybe.... Pondering.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7c30a9386dc5a16051f00b45ddf6bf63febc1822","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a new command ``ironic-collect-introspection-data`` to enable"},{"line_number":5,"context_line":"    manually publishing into the ``baremetal-introspection`` service."},{"line_number":6,"context_line":"    Executing this command on a system unknown to the Bare Metal service"},{"line_number":7,"context_line":"    will likely result in the machine becoming registered to Ironic, and"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7faddb67_42d7e54c","line":4,"range":{"start_line":4,"start_character":15,"end_line":4,"end_character":22},"in_reply_to":"7faddb67_42a045f5","updated":"2019-07-08 14:44:32.000000000","message":"I changed it to be CLI command, since that is what it is, and while it is an interpretted language and thus technically script, we\u0027re using an entrypoint to wrap it so it is not like you can vi /usr/local/bin/ironic-collect-intropsection-data and change the behavior.","commit_id":"06b5ec54e88fbaaab23efe62bc162888e89847f5"}],"setup.cfg":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ac371be14c1214e293519797c51ade7fc73c882b","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"console_scripts \u003d"},{"line_number":25,"context_line":"    ironic-python-agent \u003d ironic_python_agent.cmd.agent:run"},{"line_number":26,"context_line":"    ironic-introspection \u003d ironic_python_agent.cmd.inspect:run"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ironic_python_agent.extensions \u003d"},{"line_number":29,"context_line":"    standby \u003d ironic_python_agent.extensions.standby:StandbyExtension"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"9fb8cfa7_1b0ddd36","line":26,"updated":"2019-06-19 08:04:58.000000000","message":"I wonder if it\u0027s going to be confused with ironic-inspector.. maybe ironic-collect-introspection-data or something more verbose?","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94d83aa579622654aa9bb96e7c7887bf256343be","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"console_scripts \u003d"},{"line_number":25,"context_line":"    ironic-python-agent \u003d ironic_python_agent.cmd.agent:run"},{"line_number":26,"context_line":"    ironic-introspection \u003d ironic_python_agent.cmd.inspect:run"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ironic_python_agent.extensions \u003d"},{"line_number":29,"context_line":"    standby \u003d ironic_python_agent.extensions.standby:StandbyExtension"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"9fb8cfa7_381f7571","line":26,"in_reply_to":"9fb8cfa7_1b0ddd36","updated":"2019-06-19 23:11:53.000000000","message":"Good thought. Done.","commit_id":"6f1dee06db6703a2fd36a0b1d87e8788c435a246"}]}
