)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"624452432cb32776245a30e990d3c24f7cced840","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Testing this was beyond the ability of the AWS test framework as written,"},{"line_number":30,"context_line":"so some redesign for how we handle patching boto-related methods is"},{"line_number":31,"context_line":"included.  The new approach is simpler, more readable, and flexible"},{"line_number":32,"context_line":"in that it can better accomodate future changes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Change-Id: I5f1befa6e2f2625431523d8d94685f79426b6ae5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"8f65b57c_4f257240","line":32,"updated":"2022-08-25 20:26:18.000000000","message":"I guess I could have elaborated more on why I thought it was better.\n\nThe straightforward monkey patching doesn\u0027t work at all for some pretty important parts of moto, so we had patching happening at test setup, and patching happening after the provider was already started.  This caused race conditions where the test might actually try to talk to AWS instead of using fakes.\n\nI think the new system is helpful because it actually lets us set up fakes and mocks reliably, and we do all of it the same way so that it\u0027s consistent (no worrying about where in the startup sequence we\u0027re performing the patch).\n\nFinally, the decorator approach is consistent with some improvements we\u0027ve made in zuul (eg simple_layout) and is fairly common in testing frameworks.  I think it\u0027s good that we can set parameters for the \"outside world\" like what AWS\u0027s fake quota is for us outside the test methods.","commit_id":"6320b06950d05fa7af6384cde271d7c657c8c095"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"8c0116881a4b7f534a93ea6b176aae40dd3dcc0e","unresolved":true,"context_lines":[{"line_number":29,"context_line":"Testing this was beyond the ability of the AWS test framework as written,"},{"line_number":30,"context_line":"so some redesign for how we handle patching boto-related methods is"},{"line_number":31,"context_line":"included.  The new approach is simpler, more readable, and flexible"},{"line_number":32,"context_line":"in that it can better accomodate future changes."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Change-Id: I5f1befa6e2f2625431523d8d94685f79426b6ae5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"040c7969_b212718e","line":32,"updated":"2022-08-25 20:04:25.000000000","message":"I\u0027m not sure I agree that it is simpler and more readable. There is a lot of indirection between test functions and test classes and plumbing attributes through to each individual test run. In the past it was pretty straightforward monkey patching (that was a bit wordy), but now we\u0027re maintaining a lot of extra state on various objects to track what our patched state is.","commit_id":"6320b06950d05fa7af6384cde271d7c657c8c095"}],"doc/source/aws.rst":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"57686c7175bb18782f0792d8d17c503216309cfd","unresolved":true,"context_lines":[{"line_number":619,"context_line":"              :default: None"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"              Similar to"},{"line_number":622,"context_line":"              :attr:`providers.[azure].pools.labels.tags`,"},{"line_number":623,"context_line":"              but is interpreted as a format string with the following"},{"line_number":624,"context_line":"              values available:"},{"line_number":625,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7056479b_6d40afdd","line":622,"updated":"2022-08-23 05:50:03.000000000","message":"This should be `providers.[aws].pools.labels.tags`","commit_id":"fee1389941733be6be46885fd1cad11fe652e0f6"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"13fb20f4d0a04761a701b75128e6068afd599c78","unresolved":false,"context_lines":[{"line_number":619,"context_line":"              :default: None"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"              Similar to"},{"line_number":622,"context_line":"              :attr:`providers.[azure].pools.labels.tags`,"},{"line_number":623,"context_line":"              but is interpreted as a format string with the following"},{"line_number":624,"context_line":"              values available:"},{"line_number":625,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"0a94b056_f88a587a","line":622,"in_reply_to":"7056479b_6d40afdd","updated":"2022-08-25 20:26:29.000000000","message":"Done.","commit_id":"fee1389941733be6be46885fd1cad11fe652e0f6"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"8c0116881a4b7f534a93ea6b176aae40dd3dcc0e","unresolved":true,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"                * requestor: The name of the requestor."},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"                * requestor_data: Key/value information from the requestor."},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"                * relative_priority: The relative priority of the request."},{"line_number":653,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"2b19aa7d_66914511","line":650,"updated":"2022-08-25 20:04:25.000000000","message":"The comments in zuul indicate requestor_data is opaque to nodepool and won\u0027t be touched by nodepool. I think this change slightly modified that behavior. It is now used in a read only fashion rather than ignored.","commit_id":"6320b06950d05fa7af6384cde271d7c657c8c095"}],"nodepool/tests/unit/test_driver_aws.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"8c0116881a4b7f534a93ea6b176aae40dd3dcc0e","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            self.__testcase.create_instance_calls.append(kwargs)"},{"line_number":57,"context_line":"            return self.ec2.create_instances_orig(*args, **kwargs)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        self.ec2.create_instances_orig \u003d self.ec2.create_instances"},{"line_number":60,"context_line":"        self.ec2.create_instances \u003d _fake_create_instances"},{"line_number":61,"context_line":"        self.ec2_client.import_snapshot \u003d \\"},{"line_number":62,"context_line":"            self.__testcase.fake_aws.import_snapshot"}],"source_content_type":"text/x-python","patch_set":6,"id":"35764d8f_be797c35","line":59,"updated":"2022-08-25 20:04:25.000000000","message":"Minor nit. Python appears to bind names like self.ec2.create_instance_orig late which allows the above closure to function even before we\u0027ve defined what this name refers to. That said I think it aids readability if we define it first.","commit_id":"6320b06950d05fa7af6384cde271d7c657c8c095"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"8c0116881a4b7f534a93ea6b176aae40dd3dcc0e","unresolved":true,"context_lines":[{"line_number":522,"context_line":"        self.assertIn("},{"line_number":523,"context_line":"            {\"Key\": \"dynamic-tenant\", \"Value\": \"Tenant is tenant-1\"}, tag_list)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"    def test_aws_min_ready(self):"},{"line_number":526,"context_line":"        # Test dynamic tag formatting without a real node request"},{"line_number":527,"context_line":"        configfile \u003d self.setup_config(\u0027aws/aws-min-ready.yaml\u0027)"},{"line_number":528,"context_line":"        pool \u003d self.useNodepool(configfile, watermark_sleep\u003d1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"b3bd2c88_f6294183","line":525,"updated":"2022-08-25 20:04:25.000000000","message":"Nit the test name and comment below don\u0027t seem to agree on what is being tested.\n\nIn this case I think what we are doing is testing a min ready request to aws which happens to be a tenant less request. Could probably update the comment to be a bit more explicit about that.","commit_id":"6320b06950d05fa7af6384cde271d7c657c8c095"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"624452432cb32776245a30e990d3c24f7cced840","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        self.assertIn("},{"line_number":523,"context_line":"            {\"Key\": \"dynamic-tenant\", \"Value\": \"Tenant is tenant-1\"}, tag_list)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"    def test_aws_min_ready(self):"},{"line_number":526,"context_line":"        # Test dynamic tag formatting without a real node request"},{"line_number":527,"context_line":"        configfile \u003d self.setup_config(\u0027aws/aws-min-ready.yaml\u0027)"},{"line_number":528,"context_line":"        pool \u003d self.useNodepool(configfile, watermark_sleep\u003d1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"58f4ce30_ad558915","line":525,"in_reply_to":"b3bd2c88_f6294183","updated":"2022-08-25 20:26:18.000000000","message":"I agree it could be clarified (but I don\u0027t think it\u0027s wrong).  The min-ready pseudo-request may behave much differently (potentially not just due to lack of tenant info) than a \"real\" node request.","commit_id":"6320b06950d05fa7af6384cde271d7c657c8c095"}],"nodepool/zk/zookeeper.py":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"57686c7175bb18782f0792d8d17c503216309cfd","unresolved":true,"context_lines":[{"line_number":465,"context_line":"        self.tenant_name \u003d d.get(\u0027tenant_name\u0027)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def getSafeAttributes(self):"},{"line_number":468,"context_line":"        \u0027\u0027\u0027Return a dict of attribuse safe for user-visible templating\u0027\u0027\u0027"},{"line_number":469,"context_line":"        return Attributes("},{"line_number":470,"context_line":"            id\u003dself.id,"},{"line_number":471,"context_line":"            labels\u003dself.node_types,"}],"source_content_type":"text/x-python","patch_set":3,"id":"c2af6069_f47fee80","line":468,"updated":"2022-08-23 05:50:03.000000000","message":"typo: attributes","commit_id":"fee1389941733be6be46885fd1cad11fe652e0f6"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"13fb20f4d0a04761a701b75128e6068afd599c78","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        self.tenant_name \u003d d.get(\u0027tenant_name\u0027)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def getSafeAttributes(self):"},{"line_number":468,"context_line":"        \u0027\u0027\u0027Return a dict of attribuse safe for user-visible templating\u0027\u0027\u0027"},{"line_number":469,"context_line":"        return Attributes("},{"line_number":470,"context_line":"            id\u003dself.id,"},{"line_number":471,"context_line":"            labels\u003dself.node_types,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ebcf7eb6_300bcb45","line":468,"in_reply_to":"c2af6069_f47fee80","updated":"2022-08-25 20:26:29.000000000","message":"Done","commit_id":"fee1389941733be6be46885fd1cad11fe652e0f6"}]}
