)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"56a72605ed587e2bc9283fda962713df691afe2f","unresolved":false,"context_lines":[{"line_number":384,"context_line":"      .. value:: azure"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"         For details on the extra options required and provided by the"},{"line_number":387,"context_line":"         AWS driver, see the separate section"},{"line_number":388,"context_line":"         :attr:`providers.[azure]`"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7faddb67_735d1514","line":387,"range":{"start_line":387,"start_character":9,"end_line":387,"end_character":19},"updated":"2019-08-26 16:58:13.000000000","message":"copy pasta","commit_id":"e1200da7f68eb64744d7ed2136e87e46d61e45b7"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"831e25ee2d90e4c0d491e0f61145bd06b9e0e1c8","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"              labels:"},{"line_number":2154,"context_line":"                - name: bionic"},{"line_number":2155,"context_line":"                  username: zuul"},{"line_number":2156,"context_line":"                  imageReference:"},{"line_number":2157,"context_line":"                    sku: 18.04-LTS"},{"line_number":2158,"context_line":"                    publisher: Canonical"},{"line_number":2159,"context_line":"                    version: latest"},{"line_number":2160,"context_line":"                    offer: UbuntuServer"},{"line_number":2161,"context_line":"                  hardwareProfile:"},{"line_number":2162,"context_line":"                    vmSize: Standard_D1_v2"},{"line_number":2163,"context_line":"                  tags:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"df33271e_a303f4b7","line":2160,"range":{"start_line":2156,"start_character":0,"end_line":2160,"end_character":39},"updated":"2020-03-27 15:15:15.000000000","message":"The other drivers have the image specific information in a separate cloud-images section so it can be referenced from multiple labels. What do you think about this:\n\n providers:\n   - name: azure-central-us\n     driver: azure\n     zuul-public-key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAA...\n     resource_group_location: centralus\n     location: centralus\n     resource_group: ZuulCIDev\n     auth_path: /Users/grhayes/.azure/nodepoolCreds.json\n     subnet_id: /subscriptions/\u003csubscription-id\u003e/resourceGroups/ZuulCI/providers/Microsoft.Network/virtualNetworks/NodePool/subnets/default\n     cloud-images:\n       - name: ubuntu1804\n         username: zuul\n         imageReference:\n           sku: 18.04-LTS\n           publisher: Canonical\n           version: latest\n           offer: UbuntuServer\n     pools:\n       - name: main\n         max-servers: 10\n         labels:\n           - name: bionic\n             cloud-image: ubuntu1804\n             hardwareProfile:\n               vmSize: Standard_D1_v2\n             tags:\n               department: R\u0026D\n               purpose: CI/CD\n           - name: bionic-large\n             cloud-image: ubuntu1804\n             hardwareProfile:\n               vmSize: Large_D1_v2\n             tags:\n               department: R\u0026D\n               purpose: CI/CD","commit_id":"a3fc2046cef9bcb607bf1f9c4d4905ea1aed9a9d"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"a4144303f3914987072231fb01d6ad5b24e191e9","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"              labels:"},{"line_number":2154,"context_line":"                - name: bionic"},{"line_number":2155,"context_line":"                  username: zuul"},{"line_number":2156,"context_line":"                  imageReference:"},{"line_number":2157,"context_line":"                    sku: 18.04-LTS"},{"line_number":2158,"context_line":"                    publisher: Canonical"},{"line_number":2159,"context_line":"                    version: latest"},{"line_number":2160,"context_line":"                    offer: UbuntuServer"},{"line_number":2161,"context_line":"                  hardwareProfile:"},{"line_number":2162,"context_line":"                    vmSize: Standard_D1_v2"},{"line_number":2163,"context_line":"                  tags:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"df33271e_45c4d55f","line":2160,"range":{"start_line":2156,"start_character":0,"end_line":2160,"end_character":39},"in_reply_to":"df33271e_a303f4b7","updated":"2020-04-07 13:06:03.000000000","message":"Done","commit_id":"a3fc2046cef9bcb607bf1f9c4d4905ea1aed9a9d"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":2273,"context_line":"        Identifier to refer this cloud-image from :attr:`labels`"},{"line_number":2274,"context_line":"        section.  Since this name appears elsewhere in the nodepool"},{"line_number":2275,"context_line":"        configuration file, you may want to use your own descriptive"},{"line_number":2276,"context_line":"        name here and use one of ``image-id`` or ``image-name`` to"},{"line_number":2277,"context_line":"        specify the cloud image so that if the image name or id"},{"line_number":2278,"context_line":"        changes on the cloud, the impact to your Nodepool"},{"line_number":2279,"context_line":"        configuration will be minimal.  However, if neither of those"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_6ddf373a","line":2276,"range":{"start_line":2276,"start_character":33,"end_line":2276,"end_character":63},"updated":"2020-04-07 17:40:53.000000000","message":"This doesn\u0027t match the imageReference which is used to determine the actual image.","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":2273,"context_line":"        Identifier to refer this cloud-image from :attr:`labels`"},{"line_number":2274,"context_line":"        section.  Since this name appears elsewhere in the nodepool"},{"line_number":2275,"context_line":"        configuration file, you may want to use your own descriptive"},{"line_number":2276,"context_line":"        name here and use one of ``image-id`` or ``image-name`` to"},{"line_number":2277,"context_line":"        specify the cloud image so that if the image name or id"},{"line_number":2278,"context_line":"        changes on the cloud, the impact to your Nodepool"},{"line_number":2279,"context_line":"        configuration will be minimal.  However, if neither of those"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f493fa4_067bb2f4","line":2276,"range":{"start_line":2276,"start_character":33,"end_line":2276,"end_character":63},"in_reply_to":"df33271e_6ddf373a","updated":"2020-04-27 16:11:35.000000000","message":"updated","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":29671,"name":"Albin Vass","email":"opendev@albinvass.com","username":"albin_vass"},"change_message_id":"3f6064cd460e9ff77c68a4185b8268b17c422e4a","unresolved":false,"context_lines":[{"line_number":2286,"context_line":"        The username that a consumer should use when connecting to the"},{"line_number":2287,"context_line":"        node."},{"line_number":2288,"context_line":""},{"line_number":2289,"context_line":"     .. attr:: imageReference"},{"line_number":2290,"context_line":"        :type: dict"},{"line_number":2291,"context_line":"        :required:"},{"line_number":2292,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_09312da3","line":2289,"range":{"start_line":2289,"start_character":15,"end_line":2289,"end_character":29},"updated":"2020-04-08 07:35:34.000000000","message":"Can we stick to hyphens instead of camelcase for consistency in nodepool.yaml?\n\ne.g: image-reference instead of imageReference","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":2286,"context_line":"        The username that a consumer should use when connecting to the"},{"line_number":2287,"context_line":"        node."},{"line_number":2288,"context_line":""},{"line_number":2289,"context_line":"     .. attr:: imageReference"},{"line_number":2290,"context_line":"        :type: dict"},{"line_number":2291,"context_line":"        :required:"},{"line_number":2292,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f493fa4_6368a8b8","line":2289,"range":{"start_line":2289,"start_character":15,"end_line":2289,"end_character":29},"in_reply_to":"df33271e_09312da3","updated":"2020-04-27 16:11:35.000000000","message":"yeah - good idea, will swap them out","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":2318,"context_line":"  .. attr:: pools"},{"line_number":2319,"context_line":"      :type: list"},{"line_number":2320,"context_line":""},{"line_number":2321,"context_line":"      A pool defines a group of resources from an AWS provider. Each pool has a"},{"line_number":2322,"context_line":"      maximum number of nodes which can be launched from it, along with a number"},{"line_number":2323,"context_line":"      of cloud-related attributes used when launching nodes."},{"line_number":2324,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_ad1bff19","line":2321,"range":{"start_line":2321,"start_character":50,"end_line":2321,"end_character":53},"updated":"2020-04-07 17:40:53.000000000","message":"Copy pasta","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":2318,"context_line":"  .. attr:: pools"},{"line_number":2319,"context_line":"      :type: list"},{"line_number":2320,"context_line":""},{"line_number":2321,"context_line":"      A pool defines a group of resources from an AWS provider. Each pool has a"},{"line_number":2322,"context_line":"      maximum number of nodes which can be launched from it, along with a number"},{"line_number":2323,"context_line":"      of cloud-related attributes used when launching nodes."},{"line_number":2324,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f493fa4_7114ee44","line":2321,"range":{"start_line":2321,"start_character":50,"end_line":2321,"end_character":53},"in_reply_to":"df33271e_ad1bff19","updated":"2020-04-27 16:11:35.000000000","message":"Done","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":2339,"context_line":""},{"line_number":2340,"context_line":"            labels:"},{"line_number":2341,"context_line":"              - name: bionic"},{"line_number":2342,"context_line":"                imageReference:"},{"line_number":2343,"context_line":"                  sku: 18.04-LTS"},{"line_number":2344,"context_line":"                  publisher: Canonical"},{"line_number":2345,"context_line":"                  version: latest"},{"line_number":2346,"context_line":"                  offer: UbuntuServer"},{"line_number":2347,"context_line":"                hardwareProfile:"},{"line_number":2348,"context_line":"                  vmSize: Standard_D1_v2"},{"line_number":2349,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_edea27d6","line":2346,"range":{"start_line":2342,"start_character":16,"end_line":2346,"end_character":37},"updated":"2020-04-07 17:40:53.000000000","message":"I guess this should be\n\n - name: bionic\n   cloud-image: bionic\n   hardwareProfile:\n     vmSize: Standard_D1_v2","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":2339,"context_line":""},{"line_number":2340,"context_line":"            labels:"},{"line_number":2341,"context_line":"              - name: bionic"},{"line_number":2342,"context_line":"                imageReference:"},{"line_number":2343,"context_line":"                  sku: 18.04-LTS"},{"line_number":2344,"context_line":"                  publisher: Canonical"},{"line_number":2345,"context_line":"                  version: latest"},{"line_number":2346,"context_line":"                  offer: UbuntuServer"},{"line_number":2347,"context_line":"                hardwareProfile:"},{"line_number":2348,"context_line":"                  vmSize: Standard_D1_v2"},{"line_number":2349,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f493fa4_110c8a39","line":2346,"range":{"start_line":2342,"start_character":16,"end_line":2346,"end_character":37},"in_reply_to":"df33271e_edea27d6","updated":"2020-04-27 16:11:35.000000000","message":"Done","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"}],"nodepool/driver/azure/config.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"56a72605ed587e2bc9283fda962713df691afe2f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        pool \u003d {"},{"line_number":108,"context_line":"            v.Required(\u0027name\u0027): str,"},{"line_number":109,"context_line":"            v.Required(\u0027labels\u0027): [azure_label],"},{"line_number":110,"context_line":"            v.Required(\u0027max-servers\u0027): int,"},{"line_number":111,"context_line":"        }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        provider \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_536a5981","line":110,"range":{"start_line":110,"start_character":0,"end_line":110,"end_character":43},"updated":"2019-08-26 16:58:13.000000000","message":"max-servers comes from the \"common\" schema. You should be calling ConfigPool.getCommonSchemaDict() to get those.","commit_id":"e1200da7f68eb64744d7ed2136e87e46d61e45b7"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"56a72605ed587e2bc9283fda962713df691afe2f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            v.Required(\u0027max-servers\u0027): int,"},{"line_number":111,"context_line":"        }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        provider \u003d {"},{"line_number":114,"context_line":"            v.Required(\u0027zuul-public-key\u0027): str,"},{"line_number":115,"context_line":"            v.Required(\u0027pools\u0027): [pool],"},{"line_number":116,"context_line":"            v.Required(\u0027location\u0027): str,"},{"line_number":117,"context_line":"            v.Required(\u0027resource_group\u0027): str,"},{"line_number":118,"context_line":"            v.Required(\u0027resource_group_location\u0027): str,"},{"line_number":119,"context_line":"            v.Required(\u0027subnet_id\u0027): str,"},{"line_number":120,"context_line":"            v.Optional(\u0027auth_path\u0027): str,"},{"line_number":121,"context_line":"        }"},{"line_number":122,"context_line":"        return v.Schema(provider)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def getSupportedLabels(self, pool_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_93cc518b","line":121,"range":{"start_line":113,"start_character":0,"end_line":121,"end_character":9},"updated":"2019-08-26 16:58:13.000000000","message":"You are not calling ProviderConfig.getCommonSchemaDict() here to get the common attributes (\u0027name\u0027 and \u0027driver\u0027 among them).","commit_id":"e1200da7f68eb64744d7ed2136e87e46d61e45b7"}],"nodepool/driver/azure/provider.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        self.resource_group,"},{"line_number":118,"context_line":"                        disk.name).wait()"},{"line_number":119,"context_line":"                except CloudError:"},{"line_number":120,"context_line":"                    pass"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _cleanupLeakedNICs(self):"},{"line_number":123,"context_line":"        for nic in self.listNICs():"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_2d91af47","line":120,"updated":"2020-04-07 17:40:53.000000000","message":"We should at least log that CloudError. Otherwise we have no means to debug not working disk cleanup.","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        self.resource_group,"},{"line_number":118,"context_line":"                        disk.name).wait()"},{"line_number":119,"context_line":"                except CloudError:"},{"line_number":120,"context_line":"                    pass"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _cleanupLeakedNICs(self):"},{"line_number":123,"context_line":"        for nic in self.listNICs():"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f493fa4_e00b0ed3","line":120,"in_reply_to":"df33271e_2d91af47","updated":"2020-04-27 16:11:35.000000000","message":"Done","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                        self.resource_group,"},{"line_number":143,"context_line":"                        nic.name).wait()"},{"line_number":144,"context_line":"                except CloudError:"},{"line_number":145,"context_line":"                    pass"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _cleanupLeakedPIPs(self):"},{"line_number":148,"context_line":"        for pip in self.listPIPs():"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_6d9bb765","line":145,"updated":"2020-04-07 17:40:53.000000000","message":"We should log this error as well.","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                        self.resource_group,"},{"line_number":143,"context_line":"                        nic.name).wait()"},{"line_number":144,"context_line":"                except CloudError:"},{"line_number":145,"context_line":"                    pass"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _cleanupLeakedPIPs(self):"},{"line_number":148,"context_line":"        for pip in self.listPIPs():"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f493fa4_00071acc","line":145,"in_reply_to":"df33271e_6d9bb765","updated":"2020-04-27 16:11:35.000000000","message":"Done","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        self.resource_group,"},{"line_number":168,"context_line":"                        pip.name).wait()"},{"line_number":169,"context_line":"                except CloudError:"},{"line_number":170,"context_line":"                    pass"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _cleanupLeakedNodes(self):"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_4db7d3d9","line":170,"updated":"2020-04-07 17:40:53.000000000","message":"We should log this error as well.","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        self.resource_group,"},{"line_number":168,"context_line":"                        pip.name).wait()"},{"line_number":169,"context_line":"                except CloudError:"},{"line_number":170,"context_line":"                    pass"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _cleanupLeakedNodes(self):"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f493fa4_a068e686","line":170,"in_reply_to":"df33271e_4db7d3d9","updated":"2020-04-27 16:11:35.000000000","message":"Done","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            vm \u003d self.compute_client.virtual_machines.get("},{"line_number":215,"context_line":"                self.resource_group, server_id.rsplit(\u0027/\u0027, 1)[1])"},{"line_number":216,"context_line":"        except CloudError as e:"},{"line_number":217,"context_line":"            if e.status_code \u003d\u003d 404:"},{"line_number":218,"context_line":"                return"},{"line_number":219,"context_line":"        self.compute_client.virtual_machines.delete("},{"line_number":220,"context_line":"            self.resource_group, server_id.rsplit(\u0027/\u0027, 1)[1]).wait()"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_6de9f7b5","line":218,"range":{"start_line":217,"start_character":1,"end_line":218,"end_character":22},"updated":"2020-04-07 17:40:53.000000000","message":"This hides CloudErrors other than 404. I think we should at least log them if we hit a different error.","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            vm \u003d self.compute_client.virtual_machines.get("},{"line_number":215,"context_line":"                self.resource_group, server_id.rsplit(\u0027/\u0027, 1)[1])"},{"line_number":216,"context_line":"        except CloudError as e:"},{"line_number":217,"context_line":"            if e.status_code \u003d\u003d 404:"},{"line_number":218,"context_line":"                return"},{"line_number":219,"context_line":"        self.compute_client.virtual_machines.delete("},{"line_number":220,"context_line":"            self.resource_group, server_id.rsplit(\u0027/\u0027, 1)[1]).wait()"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f493fa4_c06b7282","line":218,"range":{"start_line":217,"start_character":1,"end_line":218,"end_character":22},"in_reply_to":"df33271e_6de9f7b5","updated":"2020-04-27 16:11:35.000000000","message":"Done","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"0bd3ed0da793725f69732680c7e4dd5e1ad19c7a","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        for async_disk_delete in disk_handle_list:"},{"line_number":282,"context_line":"            async_disk_delete.wait()"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        # TODO: remove nic"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def waitForNodeCleanup(self, server_id):"},{"line_number":287,"context_line":"        # TODO: track instance deletion"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff570b3c_a148d92c","line":284,"updated":"2020-05-18 17:23:14.000000000","message":"Is this not handled by lines 260-262?","commit_id":"fb6f25b40cda033f273a05745b12d44b17db15a9"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5427bb5f54a368b376f71b1f2b8da5c576f9f257","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        for async_disk_delete in disk_handle_list:"},{"line_number":282,"context_line":"            async_disk_delete.wait()"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        # TODO: remove nic"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def waitForNodeCleanup(self, server_id):"},{"line_number":287,"context_line":"        # TODO: track instance deletion"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff570b3c_b1113d60","line":284,"in_reply_to":"ff570b3c_a148d92c","updated":"2020-05-19 10:32:42.000000000","message":"yes it is - I must have had it as a leftover. Will remove","commit_id":"fb6f25b40cda033f273a05745b12d44b17db15a9"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"37232c109546c409df602801a2afcbff43e0825b","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        # TODO: remove nic"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def waitForNodeCleanup(self, server_id):"},{"line_number":287,"context_line":"        # TODO: track instance deletion"},{"line_number":288,"context_line":"        return True"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def getInstance(self, server_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_33c2f834","line":287,"updated":"2020-06-15 17:17:41.000000000","message":"Okay, I think I understand, but there\u0027s one thing we should be 100% sure of:\n\nWhen we call foo.wait() (e.g., async_disk_delete.wait()) above, does that return only when the disk is actually deleted (or perhaps when it fails to delete the disk)?.  Put another way, is it the case that .wait() will never return successfully while the underlying resource still exists?\n\nIf the answer to those questions is \"yes\", then I think this is correct as written and we should just change the comment in waitForNodeCleanup to read \"All async tasks are handled in cleanupNode\".\n\nOtherwise, we\u0027ll have to rethink this a bit more.\n\nIn either case, I don\u0027t think moving everything to waitForNodeCleanup would be advantageous; I think the two methods are only ever called one immediately after the other, so they are really only split for code organization purposes.","commit_id":"fb6f25b40cda033f273a05745b12d44b17db15a9"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"0bd3ed0da793725f69732680c7e4dd5e1ad19c7a","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        # TODO: remove nic"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def waitForNodeCleanup(self, server_id):"},{"line_number":287,"context_line":"        # TODO: track instance deletion"},{"line_number":288,"context_line":"        return True"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def getInstance(self, server_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff570b3c_015265de","line":287,"updated":"2020-05-18 17:23:14.000000000","message":"There\u0027s a .wait() call on virtual_machines.delete() -- does that mean we\u0027re waiting for the machine to be deleted, or just waiting for the API call to return, indicating that it received the request?\n\nIf we aren\u0027t waiting for deletion above, I worry about not implementing this method -- we will end up deleting the znode too quickly and then risk detecting the instance as a leaked instance then creating a new znode for it and deleting that until it is finally deleted.","commit_id":"fb6f25b40cda033f273a05745b12d44b17db15a9"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5e817fd020415410b8a9370f2c4958a72086be8c","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        # TODO: remove nic"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def waitForNodeCleanup(self, server_id):"},{"line_number":287,"context_line":"        # TODO: track instance deletion"},{"line_number":288,"context_line":"        return True"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def getInstance(self, server_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf51134e_3e591f5a","line":287,"in_reply_to":"bf51134e_33c2f834","updated":"2020-06-15 18:39:50.000000000","message":"yes - the `.wait()`s above will only return when it is deleted (or fails).\n\nI will update the comment below - thanks!","commit_id":"fb6f25b40cda033f273a05745b12d44b17db15a9"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"5427bb5f54a368b376f71b1f2b8da5c576f9f257","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        # TODO: remove nic"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def waitForNodeCleanup(self, server_id):"},{"line_number":287,"context_line":"        # TODO: track instance deletion"},{"line_number":288,"context_line":"        return True"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def getInstance(self, server_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff570b3c_1430d7e7","line":287,"in_reply_to":"ff570b3c_015265de","updated":"2020-05-19 10:32:42.000000000","message":"Yeah, the `.wait()`s are all polling mechanisms, so this should be implemented.","commit_id":"fb6f25b40cda033f273a05745b12d44b17db15a9"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"3f36dc2ea5351a9c8ed9d76638bd43025e3d67b4","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        # TODO: remove nic"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def waitForNodeCleanup(self, server_id):"},{"line_number":287,"context_line":"        # TODO: track instance deletion"},{"line_number":288,"context_line":"        return True"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def getInstance(self, server_id):"}],"source_content_type":"text/x-python","patch_set":15,"id":"ff570b3c_40a0a990","line":287,"in_reply_to":"ff570b3c_1430d7e7","updated":"2020-05-20 12:25:29.000000000","message":"So, after digging into this a little bit - we need to keep the waits, and do them in a specific order (if we dont wait between server and nic deletion for example, it spins throws errors until the server is deleted).\n\nHow should we do this? move the entire deletion mechanism from cleanUpNode to waitForNodeCleanUp?","commit_id":"fb6f25b40cda033f273a05745b12d44b17db15a9"}],"nodepool/tests/unit/test_driver_azure.py":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"e7e8f99e9ba8d3df1a72833a8f54549539d055a3","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from azure.mgmt.network import NetworkManagementClient"},{"line_number":35,"context_line":"from azure.mgmt.compute import ComputeManagementClient"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"auth \u003d {"},{"line_number":38,"context_line":"    \"clientId\": \"ad735158-65ca-11e7-ba4d-ecb1d756380e\","},{"line_number":39,"context_line":"    \"clientSecret\": \"b70bb224-65ca-11e7-810c-ecb1d756380e\","},{"line_number":40,"context_line":"    \"subscriptionId\": \"bfc42d3a-65ca-11e7-95cf-ecb1d756380e\","},{"line_number":41,"context_line":"    \"tenantId\": \"c81da1d8-65ca-11e7-b1d1-ecb1d756380e\","},{"line_number":42,"context_line":"    \"activeDirectoryEndpointUrl\": \"https://login.microsoftonline.com\","},{"line_number":43,"context_line":"    \"resourceManagerEndpointUrl\": \"https://management.azure.com/\","},{"line_number":44,"context_line":"    \"activeDirectoryGraphResourceId\": \"https://graph.windows.net/\","},{"line_number":45,"context_line":"    \"sqlManagementEndpointUrl\": \"https://management.core.windows.net:8443/\","},{"line_number":46,"context_line":"    \"galleryEndpointUrl\": \"https://gallery.azure.com/\","},{"line_number":47,"context_line":"    \"managementEndpointUrl\": \"https://management.core.windows.net/\""},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class FakeAzureResource:"}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_ed4227ab","line":48,"range":{"start_line":37,"start_character":0,"end_line":48,"end_character":1},"updated":"2020-04-07 17:40:53.000000000","message":"I don\u0027t find the place where this is used. Is this debug leftover?","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"2e936715fb60e46ef5f8d8ae74fc86a6257eb56a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from azure.mgmt.network import NetworkManagementClient"},{"line_number":35,"context_line":"from azure.mgmt.compute import ComputeManagementClient"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"auth \u003d {"},{"line_number":38,"context_line":"    \"clientId\": \"ad735158-65ca-11e7-ba4d-ecb1d756380e\","},{"line_number":39,"context_line":"    \"clientSecret\": \"b70bb224-65ca-11e7-810c-ecb1d756380e\","},{"line_number":40,"context_line":"    \"subscriptionId\": \"bfc42d3a-65ca-11e7-95cf-ecb1d756380e\","},{"line_number":41,"context_line":"    \"tenantId\": \"c81da1d8-65ca-11e7-b1d1-ecb1d756380e\","},{"line_number":42,"context_line":"    \"activeDirectoryEndpointUrl\": \"https://login.microsoftonline.com\","},{"line_number":43,"context_line":"    \"resourceManagerEndpointUrl\": \"https://management.azure.com/\","},{"line_number":44,"context_line":"    \"activeDirectoryGraphResourceId\": \"https://graph.windows.net/\","},{"line_number":45,"context_line":"    \"sqlManagementEndpointUrl\": \"https://management.core.windows.net:8443/\","},{"line_number":46,"context_line":"    \"galleryEndpointUrl\": \"https://gallery.azure.com/\","},{"line_number":47,"context_line":"    \"managementEndpointUrl\": \"https://management.core.windows.net/\""},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class FakeAzureResource:"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff570b3c_765a622a","line":48,"range":{"start_line":37,"start_character":0,"end_line":48,"end_character":1},"in_reply_to":"1f493fa4_e034ae95","updated":"2020-05-13 14:17:59.000000000","message":"ah found it thanks","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"59bd70baf68a2e78a7e6b14f1acd4a0612b0350b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from azure.mgmt.network import NetworkManagementClient"},{"line_number":35,"context_line":"from azure.mgmt.compute import ComputeManagementClient"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"auth \u003d {"},{"line_number":38,"context_line":"    \"clientId\": \"ad735158-65ca-11e7-ba4d-ecb1d756380e\","},{"line_number":39,"context_line":"    \"clientSecret\": \"b70bb224-65ca-11e7-810c-ecb1d756380e\","},{"line_number":40,"context_line":"    \"subscriptionId\": \"bfc42d3a-65ca-11e7-95cf-ecb1d756380e\","},{"line_number":41,"context_line":"    \"tenantId\": \"c81da1d8-65ca-11e7-b1d1-ecb1d756380e\","},{"line_number":42,"context_line":"    \"activeDirectoryEndpointUrl\": \"https://login.microsoftonline.com\","},{"line_number":43,"context_line":"    \"resourceManagerEndpointUrl\": \"https://management.azure.com/\","},{"line_number":44,"context_line":"    \"activeDirectoryGraphResourceId\": \"https://graph.windows.net/\","},{"line_number":45,"context_line":"    \"sqlManagementEndpointUrl\": \"https://management.core.windows.net:8443/\","},{"line_number":46,"context_line":"    \"galleryEndpointUrl\": \"https://gallery.azure.com/\","},{"line_number":47,"context_line":"    \"managementEndpointUrl\": \"https://management.core.windows.net/\""},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class FakeAzureResource:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f493fa4_e034ae95","line":48,"range":{"start_line":37,"start_character":0,"end_line":48,"end_character":1},"in_reply_to":"df33271e_ed4227ab","updated":"2020-04-27 16:11:35.000000000","message":"It is used in the fixtures returned in the setUp below","commit_id":"b67c769a7c2d4d0cbc71421e6f99de2844e1463c"}]}
