)]}'
{"ironic_python_agent/agent.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8544429a9e8bda9440794f20aea2bfda6252e5ad","unresolved":false,"context_lines":[{"line_number":428,"context_line":"                if config.get(\u0027metrics_statsd\u0027):"},{"line_number":429,"context_line":"                    for opt, val in config.items():"},{"line_number":430,"context_line":"                        setattr(cfg.CONF.metrics_statsd, opt, val)"},{"line_number":431,"context_line":"                if config.get(\u0027agent_token\u0027):"},{"line_number":432,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":433,"context_line":"                    LOG.info(\u0027Agent Token Received\u0027)"},{"line_number":434,"context_line":"                    if len(token) \u003d\u003d 128:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_b7bbe7bb","line":431,"updated":"2019-12-11 03:33:16.000000000","message":"We seem to not be getting the expected token out of the config. Six \u0027*\u0027, which we should also likely check and error upon.\n\n2019-12-10 21:24:39.279 488 DEBUG ironic_python_agent.agent [-] Received lookup results: {\u0027node\u0027: {\u0027uuid\u0027: \u002790b207bb-c479-4d44-876e-2bf26a23eb1b\u0027, \u0027instance_info\u0027: {}, \u0027driver_internal_info\u0027: {\u0027agent_erase_devices_iterations\u0027: 1, \u0027agent_erase_devices_zeroize\u0027: True, \u0027agent_continue_if_ata_erase_failed\u0027: False, \u0027agent_enable_ata_secure_erase\u0027: True, \u0027disk_erasure_concurrency\u0027: 1, \u0027last_power_state_change\u0027: \u00272019-12-10T21:22:04.320772\u0027, \u0027agent_secret_token\u0027: \u0027******\u0027}, \u0027properties\u0027: {\u0027cpu_arch\u0027: \u0027x86_64\u0027}, \u0027links\u0027: [{\u0027href\u0027: \u0027https://10.209.1.155/baremetal/v1/nodes/90b207bb-c479-4d44-876e-2bf26a23eb1b\u0027, \u0027rel\u0027: \u0027self\u0027}, {\u0027href\u0027: \u0027https://10.209.1.155/baremetal/nodes/90b207bb-c479-4d44-876e-2bf26a23eb1b\u0027, \u0027rel\u0027: \u0027bookmark\u0027}]}, \u0027config\u0027: {\u0027metrics\u0027: {\u0027backend\u0027: \u0027noop\u0027, \u0027prepend_host\u0027: False, \u0027prepend_uuid\u0027: False, \u0027prepend_host_reverse\u0027: True, \u0027global_prefix\u0027: None}, \u0027metrics_statsd\u0027: {\u0027statsd_host\u0027: \u0027localhost\u0027, \u0027statsd_port\u0027: 8125}, \u0027heartbeat_timeout\u0027: 300, \u0027agent_token\u0027: \u0027******\u0027}} run /usr/local/lib/python3.6/site-packages/ironic_python_agent/agent.py:416","commit_id":"2eeabc10879b138cb23d5cca54439e41f5d200cd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8544429a9e8bda9440794f20aea2bfda6252e5ad","unresolved":false,"context_lines":[{"line_number":431,"context_line":"                if config.get(\u0027agent_token\u0027):"},{"line_number":432,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":433,"context_line":"                    LOG.info(\u0027Agent Token Received\u0027)"},{"line_number":434,"context_line":"                    if len(token) \u003d\u003d 128:"},{"line_number":435,"context_line":"                        LOG.info(\u0027Agent Token Recorded\u0027)"},{"line_number":436,"context_line":"                        self.agent_token \u003d token"},{"line_number":437,"context_line":"                        self.agent_token_supported \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_d7cf8354","line":434,"updated":"2019-12-11 03:33:16.000000000","message":"Also else this so we report an error if we don\u0027t get a value.","commit_id":"2eeabc10879b138cb23d5cca54439e41f5d200cd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8544429a9e8bda9440794f20aea2bfda6252e5ad","unresolved":false,"context_lines":[{"line_number":436,"context_line":"                        self.agent_token \u003d token"},{"line_number":437,"context_line":"                        self.agent_token_supported \u003d True"},{"line_number":438,"context_line":"                        # set with-in the API client."},{"line_number":439,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":440,"context_line":"            elif cfg.CONF.inspection_callback_url:"},{"line_number":441,"context_line":"                LOG.info(\u0027No ipa-api-url configured, Heartbeat and lookup \u0027"},{"line_number":442,"context_line":"                         \u0027skipped for inspector.\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_17e2fbd4","line":439,"updated":"2019-12-11 03:33:16.000000000","message":"put an elif here for \u0027******\u0027 to print a nice big error saying lookup failed and try to explain what happened.","commit_id":"2eeabc10879b138cb23d5cca54439e41f5d200cd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1742770851cc35a74676c340e6e533ce4371179a","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        if self.agent_token is not None and self.agent_token_supported:"},{"line_number":255,"context_line":"            return self.agent_token \u003d\u003d token"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        return False"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def _get_route_source(self, dest):"},{"line_number":260,"context_line":"        \"\"\"Get the IP address to send packages to destination.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_e10d9a36","line":257,"updated":"2019-12-19 15:12:49.000000000","message":"needs tests?","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1742770851cc35a74676c340e6e533ce4371179a","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":451,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":452,"context_line":"                    if len(token) \u003d\u003d 128:"},{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by\u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"},{"line_number":456,"context_line":"                        self.agent_token_supported \u003d True"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_de1f1b6f","line":453,"updated":"2019-12-19 15:12:49.000000000","message":"need to add a space","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4f55b5d992d11f41f66867930f4d6af7bfd858b","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":451,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":452,"context_line":"                    if len(token) \u003d\u003d 128:"},{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by\u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"},{"line_number":456,"context_line":"                        self.agent_token_supported \u003d True"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_58b9fb79","line":453,"in_reply_to":"3fa7e38b_de1f1b6f","updated":"2019-12-19 21:05:32.000000000","message":"Done","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1742770851cc35a74676c340e6e533ce4371179a","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":467,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":468,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"            elif cfg.CONF.inspection_callback_url:"},{"line_number":471,"context_line":"                LOG.info(\u0027No ipa-api-url configured, Heartbeat and lookup \u0027"},{"line_number":472,"context_line":"                         \u0027skipped for inspector.\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_c112de55","line":469,"updated":"2019-12-19 15:12:49.000000000","message":"Need to add a few different tests.","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4f55b5d992d11f41f66867930f4d6af7bfd858b","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":467,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":468,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"            elif cfg.CONF.inspection_callback_url:"},{"line_number":471,"context_line":"                LOG.info(\u0027No ipa-api-url configured, Heartbeat and lookup \u0027"},{"line_number":472,"context_line":"                         \u0027skipped for inspector.\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_78bcf76a","line":469,"in_reply_to":"3fa7e38b_c112de55","updated":"2019-12-19 21:05:32.000000000","message":"We don\u0027t test logging in this file, and with adding that a token is recorded, it should be good.","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        self.serve_api \u003d True"},{"line_number":217,"context_line":"        self.agent_token \u003d agent_token"},{"line_number":218,"context_line":"        if agent_token:"},{"line_number":219,"context_line":"            self.agent_token_supported \u003d True"},{"line_number":220,"context_line":"        else:"},{"line_number":221,"context_line":"            self.agent_token_supported \u003d False"},{"line_number":222,"context_line":"        # Allows this to be turned on by the conductor while running,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_8932d65c","line":219,"updated":"2020-01-16 14:03:07.000000000","message":"self.agent_token_supported \u003d self.agent_token? Which makes it unclear why you need agent_token_supported at all..","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        self.serve_api \u003d True"},{"line_number":217,"context_line":"        self.agent_token \u003d agent_token"},{"line_number":218,"context_line":"        if agent_token:"},{"line_number":219,"context_line":"            self.agent_token_supported \u003d True"},{"line_number":220,"context_line":"        else:"},{"line_number":221,"context_line":"            self.agent_token_supported \u003d False"},{"line_number":222,"context_line":"        # Allows this to be turned on by the conductor while running,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_58a9d4db","line":219,"in_reply_to":"3fa7e38b_8932d65c","updated":"2020-01-20 22:38:43.000000000","message":"The idea behind it was a flag that locked in behavior  and if we got the token out of initial configuration we know it is present, as opposed to actual token value. At least, that was the idea.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        if cfg.CONF.agent_token_required:"},{"line_number":226,"context_line":"            self.agent_token_required \u003d True"},{"line_number":227,"context_line":"        else:"},{"line_number":228,"context_line":"            self.agent_token_required \u003d False"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_status(self):"},{"line_number":231,"context_line":"        \"\"\"Retrieve a serializable status."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_2939623f","line":228,"updated":"2020-01-16 14:03:07.000000000","message":"++","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"0403d2ad2d015756e4b821934776613e3f09f48a","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        # Allows this to be turned on by the conductor while running,"},{"line_number":223,"context_line":"        # in the event of long running ramdisks where the conductor"},{"line_number":224,"context_line":"        # got upgraded somewhere along the way."},{"line_number":225,"context_line":"        if cfg.CONF.agent_token_required:"},{"line_number":226,"context_line":"            self.agent_token_required \u003d True"},{"line_number":227,"context_line":"        else:"},{"line_number":228,"context_line":"            self.agent_token_required \u003d False"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_status(self):"},{"line_number":231,"context_line":"        \"\"\"Retrieve a serializable status."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_71f61f93","line":228,"range":{"start_line":225,"start_character":8,"end_line":228,"end_character":45},"updated":"2019-12-30 07:56:50.000000000","message":"Can we directly assign the conf value to the variable here?\n\n  self.agent_token_required \u003d cfg.CONF.agent_token_required.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5b5a0c7398f817f26f195353bedb7850bf625536","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        # Allows this to be turned on by the conductor while running,"},{"line_number":223,"context_line":"        # in the event of long running ramdisks where the conductor"},{"line_number":224,"context_line":"        # got upgraded somewhere along the way."},{"line_number":225,"context_line":"        if cfg.CONF.agent_token_required:"},{"line_number":226,"context_line":"            self.agent_token_required \u003d True"},{"line_number":227,"context_line":"        else:"},{"line_number":228,"context_line":"            self.agent_token_required \u003d False"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def get_status(self):"},{"line_number":231,"context_line":"        \"\"\"Retrieve a serializable status."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_dc77b58d","line":228,"range":{"start_line":225,"start_character":8,"end_line":228,"end_character":45},"in_reply_to":"3fa7e38b_71f61f93","updated":"2020-01-07 14:31:16.000000000","message":"we likely could..","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        # we\u0027ve previously seen a token, which is"},{"line_number":244,"context_line":"        # a mid-cluster upgrade case with long-running ramdisks."},{"line_number":245,"context_line":"        if not token and self.agent_token_supported:"},{"line_number":246,"context_line":"            if not cfg.CONF.agent_token_required:"},{"line_number":247,"context_line":"                # TODO(TheJulia): Rip this out during or after the V"},{"line_number":248,"context_line":"                # cycle."},{"line_number":249,"context_line":"                LOG.error(\u0027Agent token for requests is not required \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_4934de47","line":246,"updated":"2020-01-16 14:03:07.000000000","message":"nit: join in one \u0027if\u0027","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        # we\u0027ve previously seen a token, which is"},{"line_number":244,"context_line":"        # a mid-cluster upgrade case with long-running ramdisks."},{"line_number":245,"context_line":"        if not token and self.agent_token_supported:"},{"line_number":246,"context_line":"            if not cfg.CONF.agent_token_required:"},{"line_number":247,"context_line":"                # TODO(TheJulia): Rip this out during or after the V"},{"line_number":248,"context_line":"                # cycle."},{"line_number":249,"context_line":"                LOG.error(\u0027Agent token for requests is not required \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_b83ec887","line":246,"in_reply_to":"3fa7e38b_4934de47","updated":"2020-01-20 22:38:43.000000000","message":"Done","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            if not cfg.CONF.agent_token_required:"},{"line_number":247,"context_line":"                # TODO(TheJulia): Rip this out during or after the V"},{"line_number":248,"context_line":"                # cycle."},{"line_number":249,"context_line":"                LOG.error(\u0027Agent token for requests is not required \u0027"},{"line_number":250,"context_line":"                          \u0027by the conductor, yet we received a token. \u0027"},{"line_number":251,"context_line":"                          \u0027Cluster may be mid-upgrade.\u0027)"},{"line_number":252,"context_line":"                # Tell the API everything is okay."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_e9426aac","line":249,"updated":"2020-01-16 14:03:07.000000000","message":"s/error/warning/ since it\u0027s not fatal","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            if not cfg.CONF.agent_token_required:"},{"line_number":247,"context_line":"                # TODO(TheJulia): Rip this out during or after the V"},{"line_number":248,"context_line":"                # cycle."},{"line_number":249,"context_line":"                LOG.error(\u0027Agent token for requests is not required \u0027"},{"line_number":250,"context_line":"                          \u0027by the conductor, yet we received a token. \u0027"},{"line_number":251,"context_line":"                          \u0027Cluster may be mid-upgrade.\u0027)"},{"line_number":252,"context_line":"                # Tell the API everything is okay."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_f83440ad","line":249,"in_reply_to":"3fa7e38b_e9426aac","updated":"2020-01-20 22:38:43.000000000","message":"Done","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                # cycle."},{"line_number":249,"context_line":"                LOG.error(\u0027Agent token for requests is not required \u0027"},{"line_number":250,"context_line":"                          \u0027by the conductor, yet we received a token. \u0027"},{"line_number":251,"context_line":"                          \u0027Cluster may be mid-upgrade.\u0027)"},{"line_number":252,"context_line":"                # Tell the API everything is okay."},{"line_number":253,"context_line":"                return not self.agent_token_required"},{"line_number":254,"context_line":"        if self.agent_token is not None and self.agent_token_supported:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_093ee625","line":251,"updated":"2020-01-16 14:03:07.000000000","message":"Let\u0027s mention that this behavior is deprecated?","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                # cycle."},{"line_number":249,"context_line":"                LOG.error(\u0027Agent token for requests is not required \u0027"},{"line_number":250,"context_line":"                          \u0027by the conductor, yet we received a token. \u0027"},{"line_number":251,"context_line":"                          \u0027Cluster may be mid-upgrade.\u0027)"},{"line_number":252,"context_line":"                # Tell the API everything is okay."},{"line_number":253,"context_line":"                return not self.agent_token_required"},{"line_number":254,"context_line":"        if self.agent_token is not None and self.agent_token_supported:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_983bcc99","line":251,"in_reply_to":"3fa7e38b_093ee625","updated":"2020-01-20 22:38:43.000000000","message":"Made the error a little more clear.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                          \u0027by the conductor, yet we received a token. \u0027"},{"line_number":251,"context_line":"                          \u0027Cluster may be mid-upgrade.\u0027)"},{"line_number":252,"context_line":"                # Tell the API everything is okay."},{"line_number":253,"context_line":"                return not self.agent_token_required"},{"line_number":254,"context_line":"        if self.agent_token is not None and self.agent_token_supported:"},{"line_number":255,"context_line":"            return self.agent_token \u003d\u003d token"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_a90eb28c","line":253,"updated":"2020-01-16 14:03:07.000000000","message":"nit:\n\n return True","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                          \u0027Cluster may be mid-upgrade.\u0027)"},{"line_number":252,"context_line":"                # Tell the API everything is okay."},{"line_number":253,"context_line":"                return not self.agent_token_required"},{"line_number":254,"context_line":"        if self.agent_token is not None and self.agent_token_supported:"},{"line_number":255,"context_line":"            return self.agent_token \u003d\u003d token"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_c911aeb0","line":254,"updated":"2020-01-16 14:03:07.000000000","message":"nit: just\n\n if self.agent_token:","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":450,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":451,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":452,"context_line":"                    if len(token) \u003d\u003d 128:"},{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by \u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_6908ba7f","line":452,"updated":"2020-01-16 14:03:07.000000000","message":"Do you really want to hardcode the token length? What if we ever have to change it?","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":450,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":451,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":452,"context_line":"                    if len(token) \u003d\u003d 128:"},{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by \u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_d8ff04af","line":452,"in_reply_to":"3fa7e38b_6908ba7f","updated":"2020-01-20 22:38:43.000000000","message":"Good point, I was thinking 128 would be sufficient .. but maybe \u003e\u003d is better. That way we know it is some huge blob of data and move forward from there.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":451,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":452,"context_line":"                    if len(token) \u003d\u003d 128:"},{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by \u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"},{"line_number":456,"context_line":"                        self.agent_token_supported \u003d True"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_890bb67a","line":453,"updated":"2020-01-16 14:03:07.000000000","message":"nit: debug? This is the normal condition in the future.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":450,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":451,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":452,"context_line":"                    if len(token) \u003d\u003d 128:"},{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by \u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"},{"line_number":456,"context_line":"                        self.agent_token_supported \u003d True"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_58f314e9","line":453,"in_reply_to":"3fa7e38b_890bb67a","updated":"2020-01-20 22:38:43.000000000","message":"Done","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by \u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"},{"line_number":456,"context_line":"                        self.agent_token_supported \u003d True"},{"line_number":457,"context_line":"                        # set with-in the API client."},{"line_number":458,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":459,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_2922c203","line":456,"updated":"2020-01-16 14:03:07.000000000","message":"not needed (see above)","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":453,"context_line":"                        LOG.info(\u0027Agent token recorded as designated by \u0027"},{"line_number":454,"context_line":"                                 \u0027the ironic installation.\u0027)"},{"line_number":455,"context_line":"                        self.agent_token \u003d token"},{"line_number":456,"context_line":"                        self.agent_token_supported \u003d True"},{"line_number":457,"context_line":"                        # set with-in the API client."},{"line_number":458,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":459,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_78ee10ff","line":456,"in_reply_to":"3fa7e38b_2922c203","updated":"2020-01-20 22:38:43.000000000","message":"Done","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":459,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"},{"line_number":460,"context_line":"                        LOG.error(\u0027It appears the agent has already \u0027"},{"line_number":461,"context_line":"                                  \u0027checked and the token we receieved \u0027"},{"line_number":462,"context_line":"                                  \u0027is invalid.\u0027)"},{"line_number":463,"context_line":"                    else:"},{"line_number":464,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_491dbebd","line":461,"updated":"2020-01-16 14:03:07.000000000","message":"nit: \"received\". also, what is the expected action item here? Let\u0027s rephrase with what we expect an operator to do about it.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":459,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"},{"line_number":460,"context_line":"                        LOG.error(\u0027It appears the agent has already \u0027"},{"line_number":461,"context_line":"                                  \u0027checked and the token we receieved \u0027"},{"line_number":462,"context_line":"                                  \u0027is invalid.\u0027)"},{"line_number":463,"context_line":"                    else:"},{"line_number":464,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_1816fcf3","line":461,"in_reply_to":"3fa7e38b_491dbebd","updated":"2020-01-20 22:38:43.000000000","message":"Good point, I was thinking more so a case of debugging. I guess debug in that case makes sense.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a766fbf5da0d9571d8cc43abbbb9e991472b8926","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                        # set with-in the API client."},{"line_number":452,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":453,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"},{"line_number":454,"context_line":"                        LOG.debug(\u0027It appears the agent has already \u0027"},{"line_number":455,"context_line":"                                  \u0027checked and the token we received \u0027"},{"line_number":456,"context_line":"                                  \u0027is invalid.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_ad43d096","line":456,"range":{"start_line":454,"start_character":0,"end_line":456,"end_character":48},"updated":"2020-02-10 11:59:06.000000000","message":"Under what conditions do we expect it? If it\u0027s a normal situation, maybe not log it? If it\u0027s not, maybe use a warning?","commit_id":"36bcab0b2b0bbc213d288f29c8e5955547d8d35e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"57fa439872b536b1fd3591383b30273cf7c62190","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                        # set with-in the API client."},{"line_number":452,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":453,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"},{"line_number":454,"context_line":"                        LOG.debug(\u0027It appears the agent has already \u0027"},{"line_number":455,"context_line":"                                  \u0027checked and the token we received \u0027"},{"line_number":456,"context_line":"                                  \u0027is invalid.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_677f2816","line":456,"range":{"start_line":454,"start_character":0,"end_line":456,"end_character":48},"in_reply_to":"3fa7e38b_ad43d096","updated":"2020-02-10 21:30:41.000000000","message":"It should be a warning, we should only see this when things have gone horribly wrong.","commit_id":"36bcab0b2b0bbc213d288f29c8e5955547d8d35e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"096788b6ed6900e52261b74fc471847734273866","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        # we\u0027ve previously seen a token, which is"},{"line_number":237,"context_line":"        # a mid-cluster upgrade case with long-running ramdisks."},{"line_number":238,"context_line":"        if (not token and self.agent_token"},{"line_number":239,"context_line":"            and not cfg.CONF.agent_token_required):"},{"line_number":240,"context_line":"                # TODO(TheJulia): Rip this out during or after the V"},{"line_number":241,"context_line":"                # cycle."},{"line_number":242,"context_line":"                LOG.warning(\u0027Agent token for requests are not required \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_5d684a88","line":239,"updated":"2020-02-18 12:37:13.000000000","message":"self.agent_token_required?","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af48f72ecb852145dfb1d7849c1f04b5117f21f9","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        # we\u0027ve previously seen a token, which is"},{"line_number":237,"context_line":"        # a mid-cluster upgrade case with long-running ramdisks."},{"line_number":238,"context_line":"        if (not token and self.agent_token"},{"line_number":239,"context_line":"            and not cfg.CONF.agent_token_required):"},{"line_number":240,"context_line":"                # TODO(TheJulia): Rip this out during or after the V"},{"line_number":241,"context_line":"                # cycle."},{"line_number":242,"context_line":"                LOG.warning(\u0027Agent token for requests are not required \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_d89652a0","line":239,"in_reply_to":"3fa7e38b_5d684a88","updated":"2020-02-20 23:43:10.000000000","message":"good catch!","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"096788b6ed6900e52261b74fc471847734273866","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                if config.get(\u0027agent_token\u0027):"},{"line_number":444,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":445,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":446,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":447,"context_line":"                    if len(token) \u003e\u003d 128:"},{"line_number":448,"context_line":"                        LOG.debug(\u0027Agent token recorded as designated by \u0027"},{"line_number":449,"context_line":"                                  \u0027the ironic installation.\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_fd6496b6","line":446,"updated":"2020-02-18 12:37:13.000000000","message":"nit: seems redundant esp with line 448","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af48f72ecb852145dfb1d7849c1f04b5117f21f9","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                if config.get(\u0027agent_token\u0027):"},{"line_number":444,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":445,"context_line":"                    LOG.debug(\u0027Agent token received from the ironic \u0027"},{"line_number":446,"context_line":"                              \u0027deployment.\u0027)"},{"line_number":447,"context_line":"                    if len(token) \u003e\u003d 128:"},{"line_number":448,"context_line":"                        LOG.debug(\u0027Agent token recorded as designated by \u0027"},{"line_number":449,"context_line":"                                  \u0027the ironic installation.\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_183e2ab6","line":446,"in_reply_to":"3fa7e38b_fd6496b6","updated":"2020-02-20 23:43:10.000000000","message":"Done","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"096788b6ed6900e52261b74fc471847734273866","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                        # set with-in the API client."},{"line_number":452,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":453,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"},{"line_number":454,"context_line":"                        LOG.warning(\u0027The agent has already been retrieved. \u0027"},{"line_number":455,"context_line":"                                    \u0027IPA may not operate as intended and \u0027"},{"line_number":456,"context_line":"                                    \u0027the deployment may fail depending on \u0027"},{"line_number":457,"context_line":"                                    \u0027settings in the ironic deployment.\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_1d62d2a8","line":454,"updated":"2020-02-18 12:37:13.000000000","message":"\"token\"?","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af48f72ecb852145dfb1d7849c1f04b5117f21f9","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                        # set with-in the API client."},{"line_number":452,"context_line":"                        self.api_client.agent_token \u003d token"},{"line_number":453,"context_line":"                    elif token \u003d\u003d \u0027******\u0027:"},{"line_number":454,"context_line":"                        LOG.warning(\u0027The agent has already been retrieved. \u0027"},{"line_number":455,"context_line":"                                    \u0027IPA may not operate as intended and \u0027"},{"line_number":456,"context_line":"                                    \u0027the deployment may fail depending on \u0027"},{"line_number":457,"context_line":"                                    \u0027settings in the ironic deployment.\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_f8422e3c","line":454,"in_reply_to":"3fa7e38b_1d62d2a8","updated":"2020-02-20 23:43:10.000000000","message":"Done","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"096788b6ed6900e52261b74fc471847734273866","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":460,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":461,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":462,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":463,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"            elif cfg.CONF.inspection_callback_url:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_bdfcdebc","line":462,"updated":"2020-02-18 12:37:13.000000000","message":"Do we actually send this?","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af48f72ecb852145dfb1d7849c1f04b5117f21f9","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":460,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":461,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":462,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":463,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"            elif cfg.CONF.inspection_callback_url:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_58a262fb","line":462,"in_reply_to":"3fa7e38b_16a06f36","updated":"2020-02-20 23:43:10.000000000","message":"https://review.opendev.org/#/c/699304/17/ironic/api/controllers/v1/ramdisk.py","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0567fa415fcc90ceee3729b41f146f4fde2492d2","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":460,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":461,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":462,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":463,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"            elif cfg.CONF.inspection_callback_url:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_16a06f36","line":462,"in_reply_to":"3fa7e38b_bdfcdebc","updated":"2020-02-18 15:16:16.000000000","message":"In one of the later patches it is wired in if memory serves.","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c999792e6db46b99012be6ef5aada8e82e2f1e8d","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":460,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":462,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"            elif cfg.CONF.inspection_callback_url:"}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_1d34234a","line":461,"range":{"start_line":461,"start_character":15,"end_line":461,"end_character":54},"updated":"2020-02-24 07:21:26.000000000","message":"Does lookup() return this data? It seems from [1] we just pass \u0027agent_token\u0027.\n[1] https://review.opendev.org/#/c/692609/31","commit_id":"749c56397792ce7e2633bfb94b2c766fd1478197"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"78a7cf27d806a7d4d214a28b05297e4c309f6ae7","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":460,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":462,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"            elif cfg.CONF.inspection_callback_url:"}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_bbcc9661","line":461,"range":{"start_line":461,"start_character":15,"end_line":461,"end_character":54},"in_reply_to":"1fa4df85_1d34234a","updated":"2020-03-04 16:29:39.000000000","message":"It is added in the last change of the patch series on ironic. So not present at this moment, but will be once the other patch merges.","commit_id":"749c56397792ce7e2633bfb94b2c766fd1478197"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ff0a3b20f6b09bee9716d9b0e698526935a9fe89","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    for opt, val in config.items():"},{"line_number":442,"context_line":"                        setattr(cfg.CONF.metrics_statsd, opt, val)"},{"line_number":443,"context_line":"                if config.get(\u0027agent_token\u0027):"},{"line_number":444,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":445,"context_line":"                    if len(token) \u003e\u003d 128:"},{"line_number":446,"context_line":"                        LOG.debug(\u0027Agent token recorded as designated by \u0027"},{"line_number":447,"context_line":"                                  \u0027the ironic installation.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_e0d464eb","line":444,"updated":"2020-03-04 17:17:14.000000000","message":"nit: here you can use config[\u0027agent_token\u0027]","commit_id":"5db08c4be2d76bb063325306a79c45b49cc3a24e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dca466eeb974db2d87a5aa13cb9b29ad6f097e51","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    for opt, val in config.items():"},{"line_number":442,"context_line":"                        setattr(cfg.CONF.metrics_statsd, opt, val)"},{"line_number":443,"context_line":"                if config.get(\u0027agent_token\u0027):"},{"line_number":444,"context_line":"                    token \u003d config.get(\u0027agent_token\u0027)"},{"line_number":445,"context_line":"                    if len(token) \u003e\u003d 128:"},{"line_number":446,"context_line":"                        LOG.debug(\u0027Agent token recorded as designated by \u0027"},{"line_number":447,"context_line":"                                  \u0027the ironic installation.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_dcc9df25","line":444,"in_reply_to":"1fa4df85_e0d464eb","updated":"2020-03-07 16:09:41.000000000","message":"Done","commit_id":"5db08c4be2d76bb063325306a79c45b49cc3a24e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ff0a3b20f6b09bee9716d9b0e698526935a9fe89","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                                    \u0027intended and the deployment may fail \u0027"},{"line_number":455,"context_line":"                                    \u0027depending on settings in the ironic \u0027"},{"line_number":456,"context_line":"                                    \u0027deployment.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":460,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":462,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":463,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_00d2e000","line":460,"range":{"start_line":457,"start_character":0,"end_line":460,"end_character":60},"updated":"2020-03-04 17:17:14.000000000","message":"This is not the case when no token is received, this is when len(token) \u003c 127 and token !\u003d \u0027******\u0027. I wonder if we should just accept tokens of any length and simplify the logic.","commit_id":"5db08c4be2d76bb063325306a79c45b49cc3a24e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dca466eeb974db2d87a5aa13cb9b29ad6f097e51","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                                    \u0027intended and the deployment may fail \u0027"},{"line_number":455,"context_line":"                                    \u0027depending on settings in the ironic \u0027"},{"line_number":456,"context_line":"                                    \u0027deployment.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":460,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":462,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":463,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_fcccdb35","line":460,"range":{"start_line":457,"start_character":0,"end_line":460,"end_character":60},"in_reply_to":"1fa4df85_00d2e000","updated":"2020-03-07 16:09:41.000000000","message":"Clarified the error message in case this the token is somehow too short... which seems invalid.","commit_id":"5db08c4be2d76bb063325306a79c45b49cc3a24e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"48b565ca7c32ed2a7592a9b7800c9eef5e4b0408","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                                    \u0027intended and the deployment may fail \u0027"},{"line_number":455,"context_line":"                                    \u0027depending on settings in the ironic \u0027"},{"line_number":456,"context_line":"                                    \u0027deployment.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":460,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":462,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":463,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_bc15034b","line":460,"range":{"start_line":457,"start_character":0,"end_line":460,"end_character":60},"in_reply_to":"1fa4df85_fc9a9b11","updated":"2020-03-07 17:18:47.000000000","message":"I kind of wanted to force the token length to be explicitly checked, because I felt like someone would try and use short tokens for some silly reason. I dunno right now. Likely need more coffee.","commit_id":"5db08c4be2d76bb063325306a79c45b49cc3a24e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0b71df5073dc3fd2dc2ec638c62625a8b4677033","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                                    \u0027intended and the deployment may fail \u0027"},{"line_number":455,"context_line":"                                    \u0027depending on settings in the ironic \u0027"},{"line_number":456,"context_line":"                                    \u0027deployment.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token received, possibly an older \u0027"},{"line_number":459,"context_line":"                                 \u0027ironic installation or a cluster \u0027"},{"line_number":460,"context_line":"                                 \u0027in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"},{"line_number":462,"context_line":"                    self.agent_token_required \u003d True"},{"line_number":463,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_fc9a9b11","line":460,"range":{"start_line":457,"start_character":0,"end_line":460,"end_character":60},"in_reply_to":"1fa4df85_fcccdb35","updated":"2020-03-07 16:16:39.000000000","message":"Should we simply raise in this case? There\u0027s no way a valid ironic instance will provide it? I\u0027d simplify the whole thing to:\n\n if token \u003d\u003d \u0027******\u0027:\n    ...\n else:","commit_id":"5db08c4be2d76bb063325306a79c45b49cc3a24e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2fe7ba15da6492f58c534de56ad1584760782beb","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                    for opt, val in config.items():"},{"line_number":442,"context_line":"                        setattr(cfg.CONF.metrics_statsd, opt, val)"},{"line_number":443,"context_line":"                if config.get(\u0027agent_token\u0027):"},{"line_number":444,"context_line":"                    token \u003d config[\u0027agent_token\u0027]"},{"line_number":445,"context_line":"                    if len(token) \u003e\u003d 128:"},{"line_number":446,"context_line":"                        LOG.debug(\u0027Agent token recorded as designated by \u0027"},{"line_number":447,"context_line":"                                  \u0027the ironic installation.\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_f205cd14","line":444,"updated":"2020-03-10 11:14:43.000000000","message":"nit: you can simply it further with:\n\n token \u003d config.get(\u0027agent_token\u0027)\n if token:","commit_id":"cd6430ad65fd6a433b722d0426641da43bea09af"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2fe7ba15da6492f58c534de56ad1584760782beb","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                                    \u0027depending on settings in the ironic \u0027"},{"line_number":456,"context_line":"                                    \u0027deployment.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token or an invalid token received, \u0027"},{"line_number":459,"context_line":"                                 \u0027possibly an older ironic installation or \u0027"},{"line_number":460,"context_line":"                                 \u0027a cluster in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_12018906","line":458,"updated":"2020-03-10 11:14:43.000000000","message":"No token case is ruled out by the check on line 443, so this is only about invalid token. A warning? I\u0027d still just skip it..","commit_id":"cd6430ad65fd6a433b722d0426641da43bea09af"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"be11a02adcc2790861bc2e54adc6aba721356bf8","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                                    \u0027depending on settings in the ironic \u0027"},{"line_number":456,"context_line":"                                    \u0027deployment.\u0027)"},{"line_number":457,"context_line":"                    else:"},{"line_number":458,"context_line":"                        LOG.info(\u0027No token or an invalid token received, \u0027"},{"line_number":459,"context_line":"                                 \u0027possibly an older ironic installation or \u0027"},{"line_number":460,"context_line":"                                 \u0027a cluster in a mid-upgraded state.\u0027)"},{"line_number":461,"context_line":"                if config.get(\u0027agent_token_required\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"1fa4df85_3849ed8a","line":458,"in_reply_to":"1fa4df85_12018906","updated":"2020-03-11 14:35:03.000000000","message":"More so to flag if anything was received that is invalid, but from the standard \"reveal nothing\" standpoint.","commit_id":"cd6430ad65fd6a433b722d0426641da43bea09af"}],"ironic_python_agent/api/app.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"de2a1a542b3f0f5c4b4e3635a48557844be8208d","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":222,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":223,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":224,"context_line":"                result.join()"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_69e6e815","line":222,"updated":"2019-12-11 21:04:49.000000000","message":"Dec 11 19:22:22.112537 ubuntu-bionic-rax-dfw-0013340993 ironic-conductor[1661]: ERROR ironic.conductor.task_manager [-] Node 50c6bbd4-3f2c-4b5d-a6be-7423b8f1aea6 moved to provision state \"clean failed\" from state \"clean wait\"; target provision state is \"available\": ironic.common.exception.AgentAPIError: Agent API for node 50c6bbd4-3f2c-4b5d-a6be-7423b8f1aea6 returned HTTP status code 400 with error: 400 Bad Request: Missing or invalid name or params\n\nWhich is breaking if a token exists and the later patch to send tokens doesn\u0027t exist yet. Clusters undergoing upgrade could also hit this state if they are in mixed operation....","commit_id":"9b2d44a0fcebbfea06a60963f8dec156076777dc"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"86e0cf6d2de10dc89617d3415f9db95ba9c22d74","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":223,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":224,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":225,"context_line":"                result.join()"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_e91b4ac8","line":223,"updated":"2020-01-16 14:03:07.000000000","message":"\"we don\u0027t want to reveal that credentials are wrong\", why not? This sounds like security through obscurity to me. if something goes wrong, this message will make debugging barely possible.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"0403d2ad2d015756e4b821934776613e3f09f48a","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":223,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":224,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":225,"context_line":"                result.join()"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_91387b3b","line":223,"updated":"2019-12-30 07:56:50.000000000","message":"The error message here doesn\u0027t suggest that the token was invalid or missing. Can we mention the word \"agent token\" or similar here?","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"50c5fa71ae56c67a8dffa43b6601bccacc011553","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":223,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":224,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":225,"context_line":"                result.join()"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_70f42756","line":223,"in_reply_to":"3fa7e38b_6634cedf","updated":"2020-01-15 19:14:20.000000000","message":"The user as in the attacker or the user as in the cloud operator?","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"dcd4201e05d3bdd12b0b5f68a8f17d0ce9ee3de6","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":223,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":224,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":225,"context_line":"                result.join()"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_15391e3f","line":223,"in_reply_to":"3fa7e38b_70f42756","updated":"2020-01-16 03:15:43.000000000","message":"The cloud operator","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5b5a0c7398f817f26f195353bedb7850bf625536","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":223,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":224,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":225,"context_line":"                result.join()"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_dcec9529","line":223,"in_reply_to":"3fa7e38b_91387b3b","updated":"2020-01-07 14:31:16.000000000","message":"I\u0027m unsure we should. From a security standpoint, we don\u0027t want to reveal that credentials are wrong, we only want to indicate something is invalid, imho. I\u0027m not hard set against having a more verbose error message, but at this point the token was already activated through interactions with ironic or and the only likely case is someone trying to attack the API.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"e21868dc8b07778fe911a38d8f03b9f46ff6c4d8","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":223,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":224,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":225,"context_line":"                result.join()"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_6634cedf","line":223,"in_reply_to":"3fa7e38b_dcec9529","updated":"2020-01-09 10:41:31.000000000","message":"Ok, that makes sense from a security perspective. I am thinking of how would the user identify that there is an attack.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":223,"context_line":"                raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":224,"context_line":"            if wait and wait.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":225,"context_line":"                result.join()"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_78dcd042","line":223,"in_reply_to":"3fa7e38b_e91b4ac8","updated":"2020-01-20 22:38:43.000000000","message":"Somewhat yes. But I was thinking of owasp guidelines for usernames/identifier values not tokens as we have, and I think this case we can return access denied.\n\nAn attacker will be able to identify what they are hitting fairly quickly as opposed to becoming confused, but I think we also reveal the actual version, so that is even a silly thought to worry about.","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"096788b6ed6900e52261b74fc471847734273866","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        with metrics_utils.get_metrics_logger(__name__).timer(\u0027run_command\u0027):"},{"line_number":218,"context_line":"            result \u003d self.agent.execute_command(body[\u0027name\u0027], **body[\u0027params\u0027])"},{"line_number":219,"context_line":"            wait \u003d request.args.get(\u0027wait\u0027)"},{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_dd019ab6","line":218,"updated":"2020-02-18 12:37:13.000000000","message":"You seem to start the command before checkign the token","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af48f72ecb852145dfb1d7849c1f04b5117f21f9","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        with metrics_utils.get_metrics_logger(__name__).timer(\u0027run_command\u0027):"},{"line_number":218,"context_line":"            result \u003d self.agent.execute_command(body[\u0027name\u0027], **body[\u0027params\u0027])"},{"line_number":219,"context_line":"            wait \u003d request.args.get(\u0027wait\u0027)"},{"line_number":220,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_bdfd88b9","line":218,"in_reply_to":"3fa7e38b_dd019ab6","updated":"2020-02-20 23:43:10.000000000","message":"wow... :(\n\nSo here is a new one, our functional test runs only run unit tests! \\o/\n\nAnd of course, no unit testing for this entire file :\\","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1be23d7670daa002ecd80118637b77bc030f1dbf","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                or not isinstance(body[\u0027params\u0027], dict)):"},{"line_number":215,"context_line":"            raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":218,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":219,"context_line":"                raise http_exc.Unauthorized("},{"line_number":220,"context_line":"                    \u0027Token invalid.\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"3fa7e38b_3368e0f1","line":217,"updated":"2020-02-21 14:21:03.000000000","message":"This block has to be un-indented, otherwise it happens right after raising an exception.\n\nAlso None is redundant in get()","commit_id":"749c56397792ce7e2633bfb94b2c766fd1478197"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"78a7cf27d806a7d4d214a28b05297e4c309f6ae7","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                or not isinstance(body[\u0027params\u0027], dict)):"},{"line_number":215,"context_line":"            raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":218,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":219,"context_line":"                raise http_exc.Unauthorized("},{"line_number":220,"context_line":"                    \u0027Token invalid.\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_bbf57685","line":217,"in_reply_to":"1fa4df85_3d39df40","updated":"2020-03-04 16:29:39.000000000","message":"this is why we need unit tests for this.","commit_id":"749c56397792ce7e2633bfb94b2c766fd1478197"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c999792e6db46b99012be6ef5aada8e82e2f1e8d","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                or not isinstance(body[\u0027params\u0027], dict)):"},{"line_number":215,"context_line":"            raise http_exc.BadRequest(\u0027Missing or invalid name or params\u0027)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            token \u003d request.args.get(\u0027agent_token\u0027, None)"},{"line_number":218,"context_line":"            if not self.agent.validate_agent_token(token):"},{"line_number":219,"context_line":"                raise http_exc.Unauthorized("},{"line_number":220,"context_line":"                    \u0027Token invalid.\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1fa4df85_3d39df40","line":217,"in_reply_to":"3fa7e38b_3368e0f1","updated":"2020-02-24 07:21:26.000000000","message":"+1","commit_id":"749c56397792ce7e2633bfb94b2c766fd1478197"}],"ironic_python_agent/config.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1742770851cc35a74676c340e6e533ce4371179a","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dNone,"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the\u0027"},{"line_number":225,"context_line":"                    \u0027ironic API.\u0027),"},{"line_number":226,"context_line":"    cfg.BoolOpt(\u0027agent_token_required\u0027,"},{"line_number":227,"context_line":"                default\u003dFalse,"},{"line_number":228,"context_line":"                help\u003d\u0027Control to enforce if API command requsts should \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_fe03f70f","line":225,"updated":"2019-12-19 15:12:49.000000000","message":"note: would be good to indicate that this is NOT required, and should only be really supplied by the ironic deployment.","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4f55b5d992d11f41f66867930f4d6af7bfd858b","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dNone,"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the\u0027"},{"line_number":225,"context_line":"                    \u0027ironic API.\u0027),"},{"line_number":226,"context_line":"    cfg.BoolOpt(\u0027agent_token_required\u0027,"},{"line_number":227,"context_line":"                default\u003dFalse,"},{"line_number":228,"context_line":"                help\u003d\u0027Control to enforce if API command requsts should \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_782957ef","line":225,"in_reply_to":"3fa7e38b_fe03f70f","updated":"2019-12-19 21:05:32.000000000","message":"Done","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"0403d2ad2d015756e4b821934776613e3f09f48a","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"},{"line_number":227,"context_line":"    cfg.BoolOpt(\u0027agent_token_required\u0027,"},{"line_number":228,"context_line":"                default\u003dFalse,"},{"line_number":229,"context_line":"                help\u003d\u0027Control to enforce if API command requsts should \u0027"},{"line_number":230,"context_line":"                     \u0027enforce token validation. The configuration provided \u0027"},{"line_number":231,"context_line":"                     \u0027by the conductor MAY override this and force this \u0027"},{"line_number":232,"context_line":"                     \u0027setting to be changed to True in memory.\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_314187a8","line":229,"range":{"start_line":229,"start_character":56,"end_line":229,"end_character":63},"updated":"2019-12-30 07:56:50.000000000","message":"s/requsts/requests/","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7e582f12e552146ebff53884102399de02528f9","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"},{"line_number":227,"context_line":"    cfg.BoolOpt(\u0027agent_token_required\u0027,"},{"line_number":228,"context_line":"                default\u003dFalse,"},{"line_number":229,"context_line":"                help\u003d\u0027Control to enforce if API command requsts should \u0027"},{"line_number":230,"context_line":"                     \u0027enforce token validation. The configuration provided \u0027"},{"line_number":231,"context_line":"                     \u0027by the conductor MAY override this and force this \u0027"},{"line_number":232,"context_line":"                     \u0027setting to be changed to True in memory.\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_d8b2a4e8","line":229,"range":{"start_line":229,"start_character":56,"end_line":229,"end_character":63},"in_reply_to":"3fa7e38b_314187a8","updated":"2020-01-20 22:38:43.000000000","message":"Done","commit_id":"464da25e3913cfc63139033ae32abf9b254d911b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"76d7fab713ecef2319f3715346b0bf1be74b9b2d","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                    \u0027``ironic-collect-introspection-data`` program is \u0027"},{"line_number":221,"context_line":"                    \u0027executing in daemon mode.\u0027),"},{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dNone,"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the\u0027"},{"line_number":225,"context_line":"                    \u0027ironic API. This value is typically supplied by \u0027"},{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_5d160af6","line":223,"updated":"2020-02-18 12:39:10.000000000","message":"I think you need to support ipa-agent-token to make it work with virtual media, no?","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"59896c899ae00f544fd20c7a9b38ef24981bceb5","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                    \u0027``ironic-collect-introspection-data`` program is \u0027"},{"line_number":221,"context_line":"                    \u0027executing in daemon mode.\u0027),"},{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dNone,"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the\u0027"},{"line_number":225,"context_line":"                    \u0027ironic API. This value is typically supplied by \u0027"},{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_7c641d4f","line":223,"in_reply_to":"3fa7e38b_5d160af6","updated":"2020-02-20 22:36:45.000000000","message":"Great catch!","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af48f72ecb852145dfb1d7849c1f04b5117f21f9","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                    \u0027``ironic-collect-introspection-data`` program is \u0027"},{"line_number":221,"context_line":"                    \u0027executing in daemon mode.\u0027),"},{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dNone,"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the\u0027"},{"line_number":225,"context_line":"                    \u0027ironic API. This value is typically supplied by \u0027"},{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_fd6540b1","line":223,"in_reply_to":"3fa7e38b_7c641d4f","updated":"2020-02-20 23:43:10.000000000","message":"Done","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"04756dbe2c081e9a002241f8e94b044a4c2c8065","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                    \u0027executing in daemon mode.\u0027),"},{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dNone,"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the\u0027"},{"line_number":225,"context_line":"                    \u0027ironic API. This value is typically supplied by \u0027"},{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"},{"line_number":227,"context_line":"    cfg.BoolOpt(\u0027agent_token_required\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_8dbc69b7","line":224,"range":{"start_line":224,"start_character":63,"end_line":224,"end_character":67},"updated":"2020-02-17 14:16:08.000000000","message":"Nit: missing blank at the end of the line right before the \u0027","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"af48f72ecb852145dfb1d7849c1f04b5117f21f9","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                    \u0027executing in daemon mode.\u0027),"},{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dNone,"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the\u0027"},{"line_number":225,"context_line":"                    \u0027ironic API. This value is typically supplied by \u0027"},{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"},{"line_number":227,"context_line":"    cfg.BoolOpt(\u0027agent_token_required\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_5d67b4ba","line":224,"range":{"start_line":224,"start_character":63,"end_line":224,"end_character":67},"in_reply_to":"3fa7e38b_8dbc69b7","updated":"2020-02-20 23:43:10.000000000","message":"Done","commit_id":"3825ebc0d7cfb873d299a8c9126bc54d7f10ae98"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ff0a3b20f6b09bee9716d9b0e698526935a9fe89","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                    \u0027``ironic-collect-introspection-data`` program is \u0027"},{"line_number":221,"context_line":"                    \u0027executing in daemon mode.\u0027),"},{"line_number":222,"context_line":"    cfg.StrOpt(\u0027agent_token\u0027,"},{"line_number":223,"context_line":"               default\u003dAPARAMS.get(\u0027ipa-agent-token\u0027, None),"},{"line_number":224,"context_line":"               help\u003d\u0027Pre-shared token to use when working with the \u0027"},{"line_number":225,"context_line":"                    \u0027ironic API. This value is typically supplied by \u0027"},{"line_number":226,"context_line":"                    \u0027ironic automatically.\u0027),"}],"source_content_type":"text/x-python","patch_set":22,"id":"1fa4df85_c0d7e8ed","line":223,"updated":"2020-03-04 17:17:14.000000000","message":"nit: None redundant","commit_id":"5db08c4be2d76bb063325306a79c45b49cc3a24e"}],"ironic_python_agent/ironic_api_client.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1742770851cc35a74676c340e6e533ce4371179a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                                    cert\u003dcert,"},{"line_number":79,"context_line":"                                    **kwargs)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_ironic_api_version_header(self, version\u003dMIN_IRONIC_VERSION):"},{"line_number":82,"context_line":"        # TODO(TheJulia): It would be great to improve version handling"},{"line_number":83,"context_line":"        # logic, but we need to ship a newer version if we can."},{"line_number":84,"context_line":"        ironic_version \u003d \"%d.%d\" % self._get_ironic_api_version()"},{"line_number":85,"context_line":"        agent_token_version \u003d \"%d.%d\" % AGENT_TOKEN_IRONIC_VERSION"},{"line_number":86,"context_line":"        if (StrictVersion(ironic_version)"},{"line_number":87,"context_line":"                \u003e\u003d StrictVersion(agent_token_version)):"},{"line_number":88,"context_line":"            version \u003d agent_token_version"},{"line_number":89,"context_line":"        else:"},{"line_number":90,"context_line":"            version \u003d ironic_version"},{"line_number":91,"context_line":"        return {\u0027X-OpenStack-Ironic-API-Version\u0027: version}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _get_ironic_api_version(self):"},{"line_number":94,"context_line":"        if not self._ironic_api_version:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_81fdc608","line":91,"range":{"start_line":81,"start_character":0,"end_line":91,"end_character":58},"updated":"2019-12-19 15:12:49.000000000","message":"Needs a test?","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4f55b5d992d11f41f66867930f4d6af7bfd858b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                                    cert\u003dcert,"},{"line_number":79,"context_line":"                                    **kwargs)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_ironic_api_version_header(self, version\u003dMIN_IRONIC_VERSION):"},{"line_number":82,"context_line":"        # TODO(TheJulia): It would be great to improve version handling"},{"line_number":83,"context_line":"        # logic, but we need to ship a newer version if we can."},{"line_number":84,"context_line":"        ironic_version \u003d \"%d.%d\" % self._get_ironic_api_version()"},{"line_number":85,"context_line":"        agent_token_version \u003d \"%d.%d\" % AGENT_TOKEN_IRONIC_VERSION"},{"line_number":86,"context_line":"        if (StrictVersion(ironic_version)"},{"line_number":87,"context_line":"                \u003e\u003d StrictVersion(agent_token_version)):"},{"line_number":88,"context_line":"            version \u003d agent_token_version"},{"line_number":89,"context_line":"        else:"},{"line_number":90,"context_line":"            version \u003d ironic_version"},{"line_number":91,"context_line":"        return {\u0027X-OpenStack-Ironic-API-Version\u0027: version}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _get_ironic_api_version(self):"},{"line_number":94,"context_line":"        if not self._ironic_api_version:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_9899b37b","line":91,"range":{"start_line":81,"start_character":0,"end_line":91,"end_character":58},"in_reply_to":"3fa7e38b_81fdc608","updated":"2019-12-19 21:05:32.000000000","message":"none... :( Likely not really needed.","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1742770851cc35a74676c340e6e533ce4371179a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        data \u003d {\u0027callback_url\u0027: self._get_agent_url(advertise_address)}"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        api_ver \u003d self._get_ironic_api_version()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        if api_ver \u003e\u003d AGENT_TOKEN_IRONIC_VERSION:"},{"line_number":116,"context_line":"            data[\u0027agent_token\u0027] \u003d self.agent_token"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if api_ver \u003e\u003d AGENT_VERSION_IRONIC_VERSION:"},{"line_number":119,"context_line":"            data[\u0027agent_version\u0027] \u003d version.version_info.release_string()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_21041214","line":116,"range":{"start_line":114,"start_character":0,"end_line":116,"end_character":50},"updated":"2019-12-19 15:12:49.000000000","message":"needs a test?","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d4f55b5d992d11f41f66867930f4d6af7bfd858b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        data \u003d {\u0027callback_url\u0027: self._get_agent_url(advertise_address)}"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        api_ver \u003d self._get_ironic_api_version()"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        if api_ver \u003e\u003d AGENT_TOKEN_IRONIC_VERSION:"},{"line_number":116,"context_line":"            data[\u0027agent_token\u0027] \u003d self.agent_token"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        if api_ver \u003e\u003d AGENT_VERSION_IRONIC_VERSION:"},{"line_number":119,"context_line":"            data[\u0027agent_version\u0027] \u003d version.version_info.release_string()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_b8d02ff6","line":116,"range":{"start_line":114,"start_character":0,"end_line":116,"end_character":50},"in_reply_to":"3fa7e38b_21041214","updated":"2019-12-19 21:05:32.000000000","message":"done!","commit_id":"72d051e02149095f808c7fd7502327368de1c1d4"}],"ironic_python_agent/tests/unit/test_agent.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7d3f6a0368e21246d420c124f1e29cb59bc2d02b","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    @mock.patch.object(agent.IronicPythonAgent,"},{"line_number":338,"context_line":"                       \u0027_wait_for_interface\u0027, autospec\u003dTrue)"},{"line_number":339,"context_line":"    @mock.patch(\u0027oslo_service.wsgi.Server\u0027, autospec\u003dTrue)"},{"line_number":340,"context_line":"    @mock.patch.object(hardware, \u0027load_managers\u0027, autospec\u003dTrue)"},{"line_number":341,"context_line":"    def test_run_agent_token(self, mock_load_managers, mock_wsgi,"},{"line_number":342,"context_line":"                             mock_wait, mock_dispatch):"},{"line_number":343,"context_line":"        CONF.set_override(\u0027inspection_callback_url\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3fa7e38b_ed578826","line":340,"range":{"start_line":340,"start_character":34,"end_line":340,"end_character":38},"updated":"2020-02-10 12:01:22.000000000","message":"s/load/get/","commit_id":"36bcab0b2b0bbc213d288f29c8e5955547d8d35e"}]}
