)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"4ce2f9fbeb03b065fb425cba4ace50076b8ee399","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"When :attr:`providers.[aws].pools.labels.use-spot` is set to True, the AWS"},{"line_number":20,"context_line":"driver will launch Spot instances. If an instance get interrupted, it will be"},{"line_number":21,"context_line":"terminated and no replacement instance will be launched."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I9868d014991d78e7b2421439403ae1371b33524c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"8b40f095_34db19bd","line":21,"updated":"2023-03-27 15:33:45.000000000","message":"Thank you for the contribution!  I think this is useful and something we can accept.  I have some thoughts below, some of them somewhat skeptical, related to the additional challenges that the reclaiming behavior brings with it.\n\nSince we have no way to notify Zuul that the instance was (or will be) deleted, it will only discover this as it tries to execute operations on it.  If the user is lucky, the job will be active and the network will start to send TCP rejects and the ssh connection will terminate quickly and Ansible will exit with an error.  If the user is unlucky, the job might be at a point where it wouldn\u0027t notice the disappearance for quite a long time.  Either way, if the job is past the pre-run playbook (which is likely), it will be considered a failure.\n\nI could see users attempting to do even more work in a pre-run playbook on jobs that run on spot instances in order to try to get some kind of a retry mechanism.  But that\u0027s not what that is intended for, and it would retry all kinds of failures which should be reported as failures.  Put another way, using spot instances will increase false negatives.  Abusing pre-run to compensate will decrease true negatives.  (Of course, if, in practice, spot instances are rarely reclaimed, this is less of a problem.)\n\nIt is conceivable that users of this feature may save on EC2 costs while increasing human developer costs as they try to deal with the limitations.  I think if we really want to make the use of spot instances attractive and safe, we have more work to do to make Zuul handle them gracefully.\n\nThe above are just my general thoughts.  I have some specific suggestions in in-line comments.","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"c54a78b2252693b2b05592aa9dfc20c451f08287","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"When :attr:`providers.[aws].pools.labels.use-spot` is set to True, the AWS"},{"line_number":20,"context_line":"driver will launch Spot instances. If an instance get interrupted, it will be"},{"line_number":21,"context_line":"terminated and no replacement instance will be launched."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I9868d014991d78e7b2421439403ae1371b33524c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"cc5bf248_650cba1a","line":21,"in_reply_to":"8b40f095_34db19bd","updated":"2023-03-27 16:05:46.000000000","message":"Oops didn\u0027t mean to resolve comment; unresolving to make sure it\u0027s seen.","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"58e81ebcee473a72577aa12e13cb0a8a14a87921","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"When :attr:`providers.[aws].pools.labels.use-spot` is set to True, the AWS"},{"line_number":20,"context_line":"driver will launch Spot instances. If an instance get interrupted, it will be"},{"line_number":21,"context_line":"terminated and no replacement instance will be launched."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I9868d014991d78e7b2421439403ae1371b33524c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"dcd0651f_d367fdc4","line":21,"in_reply_to":"8b40f095_34db19bd","updated":"2023-03-27 16:04:55.000000000","message":"Tobias reminded me that Zuul does attempt to retry jobs if nodes become unreachable, so a lot of this depends on whether the spot instance reclamation happens in a way that facilitates that happening, and also the particulars of the job in whether the condition is detected quickly.  I think that may reduce my concern about people \"stuffing\" pre-run playbooks to try to get retry behaviors, but it\u0027s not clear how smoothly the reclamation process will be.  I am in favor of experimenting, observing, and improving.  Just want to set expectations appropriately.  :)","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":31083,"name":"Benjamin Schanzel","email":"benjamin.schanzel@bmw.de","username":"benjamin.schanzel"},"change_message_id":"f07dfd820aaf1746fd361555830fa9e2f17e6373","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a68cca34_cfdcf613","updated":"2023-03-10 12:17:33.000000000","message":"Looks generally good to me but I think some more words in the git commit message and maybe even a release note would be good","commit_id":"833c4ce35e175ef5d47d5aae70e44a0b9de57ada"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"c6b503efbea92ce9bab442efd44af9c6f8708599","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"005ccbc0_97dd7832","in_reply_to":"15556d26_570e4f16","updated":"2023-03-13 10:38:04.000000000","message":"Thanks, run that command and added the release note as well.","commit_id":"833c4ce35e175ef5d47d5aae70e44a0b9de57ada"},{"author":{"_account_id":31083,"name":"Benjamin Schanzel","email":"benjamin.schanzel@bmw.de","username":"benjamin.schanzel"},"change_message_id":"64c1eb71870c11b2ef940f5a24f2f80158dd2d52","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"15556d26_570e4f16","in_reply_to":"35593de8_326f8b41","updated":"2023-03-13 08:35:32.000000000","message":"Hi Christian,\nsure, this is generated from \"reno\" [1].\nreno is installed in the docs venv, or you can install it yourself again (`pip install reno`).\nTo generate a new release note\n- `reno new my-cool-feature`\n- edit `releasenotes/notes/my-cool-feature...yaml`, (remove everything you don\u0027t need)\n\n[1] https://pypi.org/project/reno/","commit_id":"833c4ce35e175ef5d47d5aae70e44a0b9de57ada"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"a2b23969f91d34c578d476de54335d4067176cd5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"35593de8_326f8b41","in_reply_to":"a68cca34_cfdcf613","updated":"2023-03-12 11:58:35.000000000","message":"Hi Benjamin,\nwill do. Can you please tell me, where the random suffix in the release notes file are coming from? Like the \u0027fbddefb56d0694a4\u0027 in \u0027releasenotes/notes/aws-multi-quota-fbddefb56d0694a4.yaml\u0027.","commit_id":"833c4ce35e175ef5d47d5aae70e44a0b9de57ada"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"ad9fe89f81a093fb348771af2d18958792c3e594","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da4bf43e_156dc346","updated":"2023-04-07 14:55:41.000000000","message":"Hi James,\nthanks for taking the time and providing your feedback. I have implemneted your suggestions. Let me know if there is something else I can/should do.\nBest,\nChristian","commit_id":"df24655fbadc9ac9bf734998ebacc136ad28e066"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"67407e0590f9e0ada8051b43091930ab338a584b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"c35ce213_d714a974","in_reply_to":"0256ebdc_c9ed917f","updated":"2023-04-16 19:16:44.000000000","message":"Done.\nThanks for the guidance James, and sorry for the confusion.","commit_id":"df24655fbadc9ac9bf734998ebacc136ad28e066"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"c8a4a6eccc18eccf2d0f977fdfe0925392a370ac","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":13,"id":"0256ebdc_c9ed917f","in_reply_to":"da4bf43e_156dc346","updated":"2023-04-13 21:09:09.000000000","message":"Hi, it looks like something went wrong on the most recent patchset.  PS13 appears to be a rebase of PS12 with no changes.  So not only do we need to get a new PS from you with the changes, we also should undo the rebase.  Adding in unecessary rebases makes it harder for reviewers to see changes between patchsets.\n\nAt this point, I recommend that you download patchset 12, make your changes, amend the commit, then run \"git review\".  Git-review will check to see if the change requires a rebase, and if so, let you know.  If it doesn\u0027t, then it will upload it as-is.","commit_id":"df24655fbadc9ac9bf734998ebacc136ad28e066"}],"doc/source/aws.rst":[{"author":{"_account_id":31083,"name":"Benjamin Schanzel","email":"benjamin.schanzel@bmw.de","username":"benjamin.schanzel"},"change_message_id":"d9c91b813219614f8e3c0fdbdaf0d1c35ce13e4e","unresolved":true,"context_lines":[{"line_number":723,"context_line":"              :type: bool"},{"line_number":724,"context_line":"              :default: False"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"              When set to True, nodepool will try to launch an EC2 Spot "},{"line_number":727,"context_line":"              instance, instead of an On-Demand instance."}],"source_content_type":"text/x-rst","patch_set":1,"id":"62401f83_d17ac45d","line":726,"updated":"2022-12-22 14:23:45.000000000","message":"remove trailing whitespace","commit_id":"0f915f1840e1d40c43d2e80d25489cf43a4563b4"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"8ad89591c3a77c66a2c672ed31163f40a1b7166f","unresolved":false,"context_lines":[{"line_number":723,"context_line":"              :type: bool"},{"line_number":724,"context_line":"              :default: False"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"              When set to True, nodepool will try to launch an EC2 Spot "},{"line_number":727,"context_line":"              instance, instead of an On-Demand instance."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ec2e56bf_1c5a6f66","line":726,"in_reply_to":"62401f83_d17ac45d","updated":"2023-02-14 14:14:51.000000000","message":"Ack","commit_id":"0f915f1840e1d40c43d2e80d25489cf43a4563b4"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"4ce2f9fbeb03b065fb425cba4ace50076b8ee399","unresolved":true,"context_lines":[{"line_number":749,"context_line":"              When set to True, Nodepool will try to launch an Amazon EC2 Spot"},{"line_number":750,"context_line":"              instance, instead of an On-Demand instance. Spot instances let"},{"line_number":751,"context_line":"              you take advantage of unused EC2 capacity, with up to 90%"},{"line_number":752,"context_line":"              discount compared to On-Demand prices."},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"              For example:"},{"line_number":755,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"d5119d72_86326b60","line":752,"updated":"2023-03-27 15:33:45.000000000","message":"The last part of the sentence reads a little bit like an advertisement, could change at any time, and isn\u0027t really that relevant to configuration.  Perhays just say \"...unused EC2 capacity at a discount\".","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"ad9fe89f81a093fb348771af2d18958792c3e594","unresolved":false,"context_lines":[{"line_number":749,"context_line":"              When set to True, Nodepool will try to launch an Amazon EC2 Spot"},{"line_number":750,"context_line":"              instance, instead of an On-Demand instance. Spot instances let"},{"line_number":751,"context_line":"              you take advantage of unused EC2 capacity, with up to 90%"},{"line_number":752,"context_line":"              discount compared to On-Demand prices."},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"              For example:"},{"line_number":755,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"a7b9b691_53a6567b","line":752,"in_reply_to":"d5119d72_86326b60","updated":"2023-04-07 14:55:41.000000000","message":"Done","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"4ce2f9fbeb03b065fb425cba4ace50076b8ee399","unresolved":true,"context_lines":[{"line_number":762,"context_line":"              .. note:: As Amazon EC2 Spot instances take advantage of unused"},{"line_number":763,"context_line":"                        EC2 capacity, you may not get an instance, if demand"},{"line_number":764,"context_line":"                        is high. Therefore, you might want to setup alternative"},{"line_number":765,"context_line":"                        nodesets as fallback."},{"line_number":766,"context_line":""},{"line_number":767,"context_line":""},{"line_number":768,"context_line":".. _`EBS volume type`: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html"}],"source_content_type":"text/x-rst","patch_set":12,"id":"49bbe889_2254da56","line":765,"updated":"2023-03-27 15:33:45.000000000","message":"I think we should mention the caveat about the instance being deleted here as well.","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"ad9fe89f81a093fb348771af2d18958792c3e594","unresolved":false,"context_lines":[{"line_number":762,"context_line":"              .. note:: As Amazon EC2 Spot instances take advantage of unused"},{"line_number":763,"context_line":"                        EC2 capacity, you may not get an instance, if demand"},{"line_number":764,"context_line":"                        is high. Therefore, you might want to setup alternative"},{"line_number":765,"context_line":"                        nodesets as fallback."},{"line_number":766,"context_line":""},{"line_number":767,"context_line":""},{"line_number":768,"context_line":".. _`EBS volume type`: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html"}],"source_content_type":"text/x-rst","patch_set":12,"id":"184827cb_1f596469","line":765,"in_reply_to":"49bbe889_2254da56","updated":"2023-04-07 14:55:41.000000000","message":"Done","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"}],"nodepool/driver/aws/adapter.py":[{"author":{"_account_id":31083,"name":"Benjamin Schanzel","email":"benjamin.schanzel@bmw.de","username":"benjamin.schanzel"},"change_message_id":"d9c91b813219614f8e3c0fdbdaf0d1c35ce13e4e","unresolved":true,"context_lines":[{"line_number":832,"context_line":"                args[\u0027BlockDeviceMappings\u0027] \u003d [mapping]"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        # enable EC2 Spot"},{"line_number":835,"context_line":"        if label.pool.use_spot:"},{"line_number":836,"context_line":"            args[\u0027InstanceMarketOptions\u0027] \u003d {"},{"line_number":837,"context_line":"                \u0027MarketType\u0027: \u0027spot\u0027,"},{"line_number":838,"context_line":"                \u0027SpotOptions\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"adb511b6_8d9404c8","line":835,"updated":"2022-12-22 14:23:45.000000000","message":"I think this must be `label.use_spot` instead","commit_id":"0f915f1840e1d40c43d2e80d25489cf43a4563b4"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"8ad89591c3a77c66a2c672ed31163f40a1b7166f","unresolved":true,"context_lines":[{"line_number":832,"context_line":"                args[\u0027BlockDeviceMappings\u0027] \u003d [mapping]"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        # enable EC2 Spot"},{"line_number":835,"context_line":"        if label.pool.use_spot:"},{"line_number":836,"context_line":"            args[\u0027InstanceMarketOptions\u0027] \u003d {"},{"line_number":837,"context_line":"                \u0027MarketType\u0027: \u0027spot\u0027,"},{"line_number":838,"context_line":"                \u0027SpotOptions\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd5d23f3_77e5d98d","line":835,"in_reply_to":"adb511b6_8d9404c8","updated":"2023-02-14 14:14:51.000000000","message":"I think it makes more sense on the pool level, which would allow you to use Spot and On-Demand instances side-by-side. You could \"encode\" Spot usage into the pool name and let the user decide, whether they want to use Spot or On-Demand. I hope this make sense.","commit_id":"0f915f1840e1d40c43d2e80d25489cf43a4563b4"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"8d4b2081b465c4f5e485d6baa335873ecf5607dd","unresolved":false,"context_lines":[{"line_number":832,"context_line":"                args[\u0027BlockDeviceMappings\u0027] \u003d [mapping]"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        # enable EC2 Spot"},{"line_number":835,"context_line":"        if label.pool.use_spot:"},{"line_number":836,"context_line":"            args[\u0027InstanceMarketOptions\u0027] \u003d {"},{"line_number":837,"context_line":"                \u0027MarketType\u0027: \u0027spot\u0027,"},{"line_number":838,"context_line":"                \u0027SpotOptions\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"1eace6cf_b9090823","line":835,"in_reply_to":"cd5d23f3_77e5d98d","updated":"2023-02-14 14:17:04.000000000","message":"Ack","commit_id":"0f915f1840e1d40c43d2e80d25489cf43a4563b4"},{"author":{"_account_id":35619,"name":"Christian von Schultz","display_name":"Christian von Schultz","email":"christian+u1@embedl.com","username":"von"},"change_message_id":"8177d4e602966d75953890d588742f9e2a68e0d7","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    \u0027inf\u0027: \u0027L-1945791B\u0027,"},{"line_number":77,"context_line":"    \u0027p\u0027: \u0027L-417A185B\u0027,"},{"line_number":78,"context_line":"    \u0027x\u0027: \u0027L-7295265B\u0027,"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"CACHE_TTL \u003d 10"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bb3289f9_2149c6c7","line":79,"updated":"2023-01-03 07:45:25.000000000","message":"I think spot instances use different quota codes.","commit_id":"3f58e2d48114fbf548a4f7e4d1c56b1d377a120c"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"1a91e677371fee22f69233725d2a282a73c85f74","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    \u0027inf\u0027: \u0027L-1945791B\u0027,"},{"line_number":77,"context_line":"    \u0027p\u0027: \u0027L-417A185B\u0027,"},{"line_number":78,"context_line":"    \u0027x\u0027: \u0027L-7295265B\u0027,"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"CACHE_TTL \u003d 10"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"73ae7e5e_141020d8","line":79,"in_reply_to":"bb3289f9_2149c6c7","updated":"2023-03-02 22:10:30.000000000","message":"I added separate quotas for Spot and use the quota which correspondents to the chosen market type option.","commit_id":"3f58e2d48114fbf548a4f7e4d1c56b1d377a120c"}],"nodepool/driver/aws/config.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"4ce2f9fbeb03b065fb425cba4ace50076b8ee399","unresolved":true,"context_lines":[{"line_number":201,"context_line":"            },"},{"line_number":202,"context_line":"            \u0027tags\u0027: dict,"},{"line_number":203,"context_line":"            \u0027dynamic-tags\u0027: dict,"},{"line_number":204,"context_line":"            \u0027use-spot\u0027: bool"},{"line_number":205,"context_line":"        }"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"51ee0f9b_1fd22403","line":204,"updated":"2023-03-27 15:33:45.000000000","message":"Nit (this is not relatide to the -1 I\u0027m leaving, it\u0027s just informative; you don\u0027t need to change it, but you are welcome to if you update to a new patchset anyway): it\u0027s customary to add an extra \",\" to the end of lines like this so that if someone adds another item later, they don\u0027t have to update this one.  Just like how you didn\u0027t have to update the \"dynamic-tags\" line.  :)","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"},{"author":{"_account_id":35571,"name":"Christian Mueller","email":"christian.mueller@gmail.com","username":"christianmueller"},"change_message_id":"ad9fe89f81a093fb348771af2d18958792c3e594","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            },"},{"line_number":202,"context_line":"            \u0027tags\u0027: dict,"},{"line_number":203,"context_line":"            \u0027dynamic-tags\u0027: dict,"},{"line_number":204,"context_line":"            \u0027use-spot\u0027: bool"},{"line_number":205,"context_line":"        }"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"512a27ec_caa070b3","line":204,"in_reply_to":"51ee0f9b_1fd22403","updated":"2023-04-07 14:55:41.000000000","message":"Done","commit_id":"c37b489381aeedeca8b72206234b4917ef4bdd2e"}]}
