)]}'
{"zuul/driver/aws/awsendpoint.py":[{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"b95d5b9243b75ed750a0f013d1d84b7d707d9e54","unresolved":true,"context_lines":[{"line_number":190,"context_line":"                self.tags, self.hostname, self.log, client_token)"},{"line_number":191,"context_line":"            self.state \u003d self.HOST_ALLOCATING_SUBMIT"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if self.state \u003d\u003d self.HOST_ALLOCATING_SUBMIT:"},{"line_number":194,"context_line":"            if not self.host_create_future:"},{"line_number":195,"context_line":"                client_token \u003d self.getClientToken(\"submit-allocate-host\")"},{"line_number":196,"context_line":"                self.host_create_future \u003d self.endpoint._submitAllocateHost("}],"source_content_type":"text/x-python","patch_set":4,"id":"f65db9e7_a579752e","line":193,"updated":"2024-07-30 12:18:02.000000000","message":"The state `HOST_ALLOCATING_START` and `HOST_ALLOCATING_SUBMIT` could be combined as there is no state that could be recovered from Zookeeper.","commit_id":"354c01fdd1e1d6cc01a7850de884b73cd4fe8284"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"4ca06657b09fab4993cc6c4ff9eea917ee5b79d8","unresolved":true,"context_lines":[{"line_number":190,"context_line":"                self.tags, self.hostname, self.log, client_token)"},{"line_number":191,"context_line":"            self.state \u003d self.HOST_ALLOCATING_SUBMIT"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if self.state \u003d\u003d self.HOST_ALLOCATING_SUBMIT:"},{"line_number":194,"context_line":"            if not self.host_create_future:"},{"line_number":195,"context_line":"                client_token \u003d self.getClientToken(\"submit-allocate-host\")"},{"line_number":196,"context_line":"                self.host_create_future \u003d self.endpoint._submitAllocateHost("}],"source_content_type":"text/x-python","patch_set":4,"id":"fa2dd7e0_de94ced9","line":193,"in_reply_to":"e15d84c2_76797624","updated":"2024-07-31 11:01:19.000000000","message":"With the current state the API call will happen twice and essentially create two instances if the SM is moved to a different launcher.\n\nWe could try to reconcile this by checking the list of available instances and their metadata. In case we create a second instance the first one should later be cleaned up as unallocated instance.","commit_id":"354c01fdd1e1d6cc01a7850de884b73cd4fe8284"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"7ec89835dabda92d220dc7f62a712925d97e7184","unresolved":true,"context_lines":[{"line_number":190,"context_line":"                self.tags, self.hostname, self.log, client_token)"},{"line_number":191,"context_line":"            self.state \u003d self.HOST_ALLOCATING_SUBMIT"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if self.state \u003d\u003d self.HOST_ALLOCATING_SUBMIT:"},{"line_number":194,"context_line":"            if not self.host_create_future:"},{"line_number":195,"context_line":"                client_token \u003d self.getClientToken(\"submit-allocate-host\")"},{"line_number":196,"context_line":"                self.host_create_future \u003d self.endpoint._submitAllocateHost("}],"source_content_type":"text/x-python","patch_set":4,"id":"e15d84c2_76797624","line":193,"in_reply_to":"f65db9e7_a579752e","updated":"2024-07-30 21:44:00.000000000","message":"It would be nice to be able to differentiate these states for logging actions local to a single launcher.  But I agree it\u0027s probably not worth a ZK update.  I only have one idea for how to improve this, and it\u0027s a super complicated idea involving having different state enumerations that serialize to the same values.  Anyway, I\u0027m okay keeping the extra state for now and accepting the minor zk update cost, or collapsing these into one value (maybe we can get the information about whether/when the actual api call is made another way).  Now that I write it, that sounds like the best.  :)","commit_id":"354c01fdd1e1d6cc01a7850de884b73cd4fe8284"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"f32f3d4d5f52bea0bbe765cae796dfb63059e66e","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                self.tags, self.hostname, self.log, client_token)"},{"line_number":191,"context_line":"            self.state \u003d self.HOST_ALLOCATING_SUBMIT"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if self.state \u003d\u003d self.HOST_ALLOCATING_SUBMIT:"},{"line_number":194,"context_line":"            if not self.host_create_future:"},{"line_number":195,"context_line":"                client_token \u003d self.getClientToken(\"submit-allocate-host\")"},{"line_number":196,"context_line":"                self.host_create_future \u003d self.endpoint._submitAllocateHost("}],"source_content_type":"text/x-python","patch_set":4,"id":"7ed42841_a8cc3ffa","line":193,"in_reply_to":"fa2dd7e0_de94ced9","updated":"2024-08-02 12:27:46.000000000","message":"Done","commit_id":"354c01fdd1e1d6cc01a7850de884b73cd4fe8284"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"b95d5b9243b75ed750a0f013d1d84b7d707d9e54","unresolved":true,"context_lines":[{"line_number":228,"context_line":"                client_token)"},{"line_number":229,"context_line":"            self.state \u003d self.INSTANCE_CREATING_SUBMIT"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if self.state \u003d\u003d self.INSTANCE_CREATING_SUBMIT:"},{"line_number":232,"context_line":"            if not self.create_future:"},{"line_number":233,"context_line":"                client_token \u003d self.getClientToken(\"submit-create-instance\")"},{"line_number":234,"context_line":"                self.create_future \u003d self.endpoint._submitCreateInstance("}],"source_content_type":"text/x-python","patch_set":4,"id":"de61d6c8_ac776fc7","line":231,"updated":"2024-07-30 12:18:02.000000000","message":"The state `INSTANCE_CREATING_START` and `INSTANCE_CREATING_SUBMIT` could be combined as there is no state that could be recovered from Zookeeper.","commit_id":"354c01fdd1e1d6cc01a7850de884b73cd4fe8284"},{"author":{"_account_id":27582,"name":"Simon Westphahl","email":"simon.westphahl@bmw.de","username":"simon.westphahl"},"change_message_id":"4ca06657b09fab4993cc6c4ff9eea917ee5b79d8","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                client_token)"},{"line_number":229,"context_line":"            self.state \u003d self.INSTANCE_CREATING_SUBMIT"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if self.state \u003d\u003d self.INSTANCE_CREATING_SUBMIT:"},{"line_number":232,"context_line":"            if not self.create_future:"},{"line_number":233,"context_line":"                client_token \u003d self.getClientToken(\"submit-create-instance\")"},{"line_number":234,"context_line":"                self.create_future \u003d self.endpoint._submitCreateInstance("}],"source_content_type":"text/x-python","patch_set":4,"id":"4af19030_fab17c03","line":231,"in_reply_to":"de61d6c8_ac776fc7","updated":"2024-07-31 11:01:19.000000000","message":"Done","commit_id":"354c01fdd1e1d6cc01a7850de884b73cd4fe8284"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"937f5b07d709494fe2b9198bcdcc880171d1e473","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        # Restore local objects"},{"line_number":154,"context_line":"        self.quota \u003d self.endpoint.getQuotaForLabel("},{"line_number":155,"context_line":"            self.label, self.flavor)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        if self.state in ("},{"line_number":158,"context_line":"                self.HOST_ALLOCATING_START, self.INSTANCE_CREATING_START):"}],"source_content_type":"text/x-python","patch_set":6,"id":"479043b2_8e1d4279","line":155,"updated":"2024-08-05 19:52:44.000000000","message":"We should port over the fleet api stuff soon -- this is already different.  But structurally not a problem -- we\u0027ll just restore the quotainfo from the serialized resources.","commit_id":"1a2026cbe4448ea8b80cf20c858b9f6b0aa6a83a"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"937f5b07d709494fe2b9198bcdcc880171d1e473","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                InstanceId\u003dself.external_id[\u0027instance\u0027],"},{"line_number":178,"context_line":"                State\u003ddict(Name\u003d\u0027pending\u0027),"},{"line_number":179,"context_line":"            )"},{"line_number":180,"context_line":"            self.instance \u003d self.endpoint._refresh(instance)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def toDict(self):"},{"line_number":183,"context_line":"        data \u003d super().toDict()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fc9058f_de0a300a","line":180,"updated":"2024-08-05 19:52:44.000000000","message":"I\u0027d like to look at removing this dictionary hack and just have the individual classes store whatever information they need in their own top-level variables.  That should probably be its own change, but I\u0027d like to do it before we consider this to be in production, while it\u0027s still easy.","commit_id":"1a2026cbe4448ea8b80cf20c858b9f6b0aa6a83a"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"937f5b07d709494fe2b9198bcdcc880171d1e473","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        data.update("},{"line_number":185,"context_line":"            attempts\u003dself.attempts,"},{"line_number":186,"context_line":"            image_external_id\u003dself.image_external_id,"},{"line_number":187,"context_line":"            dedicated_host_id\u003dself.dedicated_host_id"},{"line_number":188,"context_line":"        )"},{"line_number":189,"context_line":"        return data"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"675d03b4_08d187cb","line":187,"updated":"2024-08-05 19:52:44.000000000","message":"The external_id as dict hack is already leading to confusion -- we\u0027re storing dedicated_host_id as a top_level var here (good) but it\u0027s also in external_id provided from the superclass.","commit_id":"1a2026cbe4448ea8b80cf20c858b9f6b0aa6a83a"}],"zuul/launcher/server.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"7ec89835dabda92d220dc7f62a712925d97e7184","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def _checkNode(self, node, log):"},{"line_number":287,"context_line":"        log.debug(\"Checking node %s\", node)"},{"line_number":288,"context_line":"        with self.createZKContext(node._lock, self.log) as ctx:"},{"line_number":289,"context_line":"            with node.activeContext(ctx):"},{"line_number":290,"context_line":"                if not node.create_state_machine:"},{"line_number":291,"context_line":"                    provider \u003d self._getProvider("},{"line_number":292,"context_line":"                        node.tenant_name, node.provider)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ed133190_2f943bcb","line":289,"updated":"2024-07-30 21:44:00.000000000","message":"One thing to consider about using activeContext here: it does mean that we\u0027re going to re-serialize every time we check the state machine, which is *a lot*.  We obviously will only write to zk if there\u0027s a delta, but we have to check if there\u0027s a delta.\n\nThis could be avoided if we use explicit updateAttribute calls in the statemachines themselves.  That\u0027s more tedious during development, but at scale, it might actually provide a noticeable improvement.\n\nWe could also go with this for now, and optimize later; it wouldn\u0027t be a huge change.","commit_id":"354c01fdd1e1d6cc01a7850de884b73cd4fe8284"}]}
