)]}'
{"doc/source/aws.rst":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":113,"context_line":"      :type: int"},{"line_number":114,"context_line":"      :default: unlimited"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"      Maximum number of cores usable from this pool."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"   .. attr:: max-servers"},{"line_number":119,"context_line":"      :type: int"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e528039e_f3435752","line":116,"updated":"2022-07-25 21:22:51.000000000","message":"I believe the limits in this block are provider defaults for pools if otherwise unspecified? Might want to update this line and the others below to make that more clear.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":113,"context_line":"      :type: int"},{"line_number":114,"context_line":"      :default: unlimited"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"      Maximum number of cores usable from this pool."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"   .. attr:: max-servers"},{"line_number":119,"context_line":"      :type: int"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c587ba92_4f05f8a5","line":116,"in_reply_to":"e528039e_f3435752","updated":"2022-07-25 21:41:20.000000000","message":"Yeah, we can add that in there.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":610,"context_line":".. _`Boto configuration`: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html"},{"line_number":611,"context_line":".. _`Boto describe images`: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_images"},{"line_number":612,"context_line":".. _`VM Import/Export service role`: https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport-role"},{"line_number":613,"context_line":".. _`instance quotas`: https://us-west-1.console.aws.amazon.com/servicequotas/home/services/ec2/quotas"}],"source_content_type":"text/x-rst","patch_set":3,"id":"aa85f577_76d5fd64","line":613,"updated":"2022-07-25 21:22:51.000000000","message":"Amazon wants me to sign in to see this content :(","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":610,"context_line":".. _`Boto configuration`: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html"},{"line_number":611,"context_line":".. _`Boto describe images`: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_images"},{"line_number":612,"context_line":".. _`VM Import/Export service role`: https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport-role"},{"line_number":613,"context_line":".. _`instance quotas`: https://us-west-1.console.aws.amazon.com/servicequotas/home/services/ec2/quotas"}],"source_content_type":"text/x-rst","patch_set":3,"id":"4f90f032_4d9e8e9c","line":613,"in_reply_to":"aa85f577_76d5fd64","updated":"2022-07-25 21:41:20.000000000","message":"Boo.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"}],"nodepool/driver/aws/adapter.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"f882d3f1900a62acd3e9de02eb6e8cc2d3e4de21","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                self.log.warning(\"Unknown quota code for instance type: %s\","},{"line_number":341,"context_line":"                                 instance_type)"},{"line_number":342,"context_line":"                continue"},{"line_number":343,"context_line":"            with self.non_mutating_rate_limiter:"},{"line_number":344,"context_line":"                self.log.debug(\"Getting quota limits for %s\", code)"},{"line_number":345,"context_line":"                response \u003d self.aws_quotas.get_service_quota("},{"line_number":346,"context_line":"                    ServiceCode\u003d\u0027ec2\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"80868896_6709e992","line":343,"updated":"2022-07-25 07:36:21.000000000","message":"We should continue here if args[code] is already existing in order to avoid requesting the same code multiple times.","commit_id":"a63954ecd63af5e3db7fea3862dd9ea77e273dc3"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"dc28c3fd185531d4d9422c9a99661b75deb9ee14","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                self.log.warning(\"Unknown quota code for instance type: %s\","},{"line_number":341,"context_line":"                                 instance_type)"},{"line_number":342,"context_line":"                continue"},{"line_number":343,"context_line":"            with self.non_mutating_rate_limiter:"},{"line_number":344,"context_line":"                self.log.debug(\"Getting quota limits for %s\", code)"},{"line_number":345,"context_line":"                response \u003d self.aws_quotas.get_service_quota("},{"line_number":346,"context_line":"                    ServiceCode\u003d\u0027ec2\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bc8c453c_5c0779aa","line":343,"in_reply_to":"80868896_6709e992","updated":"2022-07-25 13:59:09.000000000","message":"Note that the old code doesn\u0027t do any caching here either.  The reason is that\nthe caching is handled in the QuotaSupport class: https://opendev.org/zuul/nodepool/src/branch/master/nodepool/driver/utils.py#L310-L313\n\nBy default, it\u0027s only refreshed every 5 minutes, but it is intended to be refreshed so that we can update to new values when it changes.","commit_id":"a63954ecd63af5e3db7fea3862dd9ea77e273dc3"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"5852fd53f2a28077437f8ec9d4292e58adbdf55e","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                self.log.warning(\"Unknown quota code for instance type: %s\","},{"line_number":341,"context_line":"                                 instance_type)"},{"line_number":342,"context_line":"                continue"},{"line_number":343,"context_line":"            with self.non_mutating_rate_limiter:"},{"line_number":344,"context_line":"                self.log.debug(\"Getting quota limits for %s\", code)"},{"line_number":345,"context_line":"                response \u003d self.aws_quotas.get_service_quota("},{"line_number":346,"context_line":"                    ServiceCode\u003d\u0027ec2\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"8647f9d4_1c043075","line":343,"in_reply_to":"80868896_6709e992","updated":"2022-07-25 14:05:43.000000000","message":"Oops, I misunderstood.  I agree and will update.","commit_id":"a63954ecd63af5e3db7fea3862dd9ea77e273dc3"}],"nodepool/driver/aws/config.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":230,"context_line":"            \u0027host-key-checking\u0027: bool,"},{"line_number":231,"context_line":"            \u0027max-cores\u0027: int,"},{"line_number":232,"context_line":"            \u0027max-ram\u0027: int,"},{"line_number":233,"context_line":"            \u0027max-resources\u0027: {str: int},"},{"line_number":234,"context_line":"        })"},{"line_number":235,"context_line":"        return pool"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"4ed0b2fe_5d4ea800","line":233,"updated":"2022-07-25 21:22:51.000000000","message":"Shouldn\u0027t this also include max-servers?","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            \u0027host-key-checking\u0027: bool,"},{"line_number":231,"context_line":"            \u0027max-cores\u0027: int,"},{"line_number":232,"context_line":"            \u0027max-ram\u0027: int,"},{"line_number":233,"context_line":"            \u0027max-resources\u0027: {str: int},"},{"line_number":234,"context_line":"        })"},{"line_number":235,"context_line":"        return pool"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a2fb8e1a_94af6183","line":233,"in_reply_to":"4ed0b2fe_5d4ea800","updated":"2022-07-25 21:41:20.000000000","message":"That one\u0027s in the common schema dict so we don\u0027t need to add it.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":324,"context_line":"            \u0027launch-retries\u0027: int,"},{"line_number":325,"context_line":"            \u0027object-storage\u0027: object_storage,"},{"line_number":326,"context_line":"            \u0027image-format\u0027: v.Any(\u0027ova\u0027, \u0027vhd\u0027, \u0027vhdx\u0027, \u0027vmdk\u0027, \u0027raw\u0027),"},{"line_number":327,"context_line":"        })"},{"line_number":328,"context_line":"        return v.Schema(provider)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def getSupportedLabels(self, pool_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"c3437cfa_b14ef14a","line":327,"updated":"2022-07-25 21:22:51.000000000","message":"Why are max-servers, max-cores, max-ram, and max-resources not needing to be listed here like we do with the pool?","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            \u0027launch-retries\u0027: int,"},{"line_number":325,"context_line":"            \u0027object-storage\u0027: object_storage,"},{"line_number":326,"context_line":"            \u0027image-format\u0027: v.Any(\u0027ova\u0027, \u0027vhd\u0027, \u0027vhdx\u0027, \u0027vmdk\u0027, \u0027raw\u0027),"},{"line_number":327,"context_line":"        })"},{"line_number":328,"context_line":"        return v.Schema(provider)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def getSupportedLabels(self, pool_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7b7cf0ef_00de3729","line":327,"in_reply_to":"c3437cfa_b14ef14a","updated":"2022-07-25 21:41:20.000000000","message":"We probably should.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"}],"nodepool/driver/utils.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":232,"context_line":"        for category in other.quota.keys():"},{"line_number":233,"context_line":"            self.quota.setdefault(category, {})"},{"line_number":234,"context_line":"            for resource in other.quota[category].keys():"},{"line_number":235,"context_line":"                self.quota[category].setdefault(resource, self.default)"},{"line_number":236,"context_line":"        for category in self.quota.keys():"},{"line_number":237,"context_line":"            for resource in self.quota[category].keys():"},{"line_number":238,"context_line":"                second_value \u003d other.quota.get(category, {}).get("}],"source_content_type":"text/x-python","patch_set":3,"id":"bbf4dbd6_110485f5","line":235,"updated":"2022-07-25 21:22:51.000000000","message":"Is this block of new code there to handle the config upgrade case with zk records potentially not having the information?","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        for category in other.quota.keys():"},{"line_number":233,"context_line":"            self.quota.setdefault(category, {})"},{"line_number":234,"context_line":"            for resource in other.quota[category].keys():"},{"line_number":235,"context_line":"                self.quota[category].setdefault(resource, self.default)"},{"line_number":236,"context_line":"        for category in self.quota.keys():"},{"line_number":237,"context_line":"            for resource in self.quota[category].keys():"},{"line_number":238,"context_line":"                second_value \u003d other.quota.get(category, {}).get("}],"source_content_type":"text/x-python","patch_set":3,"id":"43acd8b7_d633d07d","line":235,"in_reply_to":"bbf4dbd6_110485f5","updated":"2022-07-25 21:41:20.000000000","message":"Yes, except it\u0027s not ZK records because this is all in-memory.  So it\u0027s more like to handle subtracting a QuotaInfo with one specification from another QuotaInfo that doesn\u0027t have it.  For example, a Provider that doesn\u0027t specify a quota for high-memory instances (but to math.inf) and an instance that specifies it needs one high memory instance.  We need that to end up being \"math.inf-1\u003dmath.inf\".  This initializes the first operand in that case.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"}],"nodepool/tests/unit/test_driver_aws.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":139,"context_line":"            _fake_create_instances"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # moto does not mock service-quotas, so we do it ourselves:"},{"line_number":142,"context_line":"        def _fake_get_service_quota(ServiceCode, QuotaCode, *args, **kwargs):"},{"line_number":143,"context_line":"            # This is a simple fake that only returns the number"},{"line_number":144,"context_line":"            # of cores."},{"line_number":145,"context_line":"            if quotas is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"d471d40e_8b544819","line":142,"updated":"2022-07-25 21:22:51.000000000","message":"Nit these new argument names using camel case make me think they are classes rather than arguments. I guess these may come from the source that we are overriding hence the difference in convention?","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            _fake_create_instances"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # moto does not mock service-quotas, so we do it ourselves:"},{"line_number":142,"context_line":"        def _fake_get_service_quota(ServiceCode, QuotaCode, *args, **kwargs):"},{"line_number":143,"context_line":"            # This is a simple fake that only returns the number"},{"line_number":144,"context_line":"            # of cores."},{"line_number":145,"context_line":"            if quotas is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"d20e9688_f5e144f6","line":142,"in_reply_to":"d471d40e_8b544819","updated":"2022-07-25 21:41:20.000000000","message":"Yes, and boto frequently does required keyword args, so we\u0027re stuck with it.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":228,"context_line":"        node1 \u003d self.assertSuccess(req1)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        # Create a second high-memory node request; this should be"},{"line_number":231,"context_line":"        # over quota so it won\u0027t be fulfilled."},{"line_number":232,"context_line":"        req2 \u003d zk.NodeRequest()"},{"line_number":233,"context_line":"        req2.state \u003d zk.REQUESTED"},{"line_number":234,"context_line":"        req2.node_types.append(\u0027high\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"96f517c9_e436c912","line":231,"updated":"2022-07-25 21:22:51.000000000","message":"If anyone is wondering the high mem cpu core flavor that we\u0027re using comes with 224 cores. Neat.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        node1 \u003d self.assertSuccess(req1)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        # Create a second high-memory node request; this should be"},{"line_number":231,"context_line":"        # over quota so it won\u0027t be fulfilled."},{"line_number":232,"context_line":"        req2 \u003d zk.NodeRequest()"},{"line_number":233,"context_line":"        req2.state \u003d zk.REQUESTED"},{"line_number":234,"context_line":"        req2.node_types.append(\u0027high\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a109b37_b4636bc9","line":231,"in_reply_to":"96f517c9_e436c912","updated":"2022-07-25 21:41:20.000000000","message":"They have some crazy stuff.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9c44132a4d6f7ff63701fa4be69d1137d7e34d43","unresolved":true,"context_lines":[{"line_number":283,"context_line":"        node1 \u003d self.assertSuccess(req1)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        # Create a second standard node request; this should be"},{"line_number":286,"context_line":"        # over quota so it won\u0027t be fulfilled."},{"line_number":287,"context_line":"        req2 \u003d zk.NodeRequest()"},{"line_number":288,"context_line":"        req2.state \u003d zk.REQUESTED"},{"line_number":289,"context_line":"        req2.node_types.append(\u0027standard\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"219ddde1_6a745f08","line":286,"updated":"2022-07-25 21:22:51.000000000","message":"Nit this is over our local max-cores values. Should be fine in cloud quota.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fee6ea849f57708434109927bc0021fd8557a8fa","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        node1 \u003d self.assertSuccess(req1)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        # Create a second standard node request; this should be"},{"line_number":286,"context_line":"        # over quota so it won\u0027t be fulfilled."},{"line_number":287,"context_line":"        req2 \u003d zk.NodeRequest()"},{"line_number":288,"context_line":"        req2.state \u003d zk.REQUESTED"},{"line_number":289,"context_line":"        req2.node_types.append(\u0027standard\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"05d57108_99aadeab","line":286,"in_reply_to":"219ddde1_6a745f08","updated":"2022-07-25 21:41:20.000000000","message":"I\u0027ll fix this with the others.","commit_id":"2c09d1ccd472deb9be175732657945d2a3d98e68"}]}
