override fun create()

in plugin-azure-server/src/main/kotlin/jetbrains/buildServer/clouds/azure/arm/connector/tasks/DeleteDeploymentTaskImpl.kt [61:103]


    override fun create(api: AzureApi, taskContext: AzureTaskContext, parameter: DeleteDeploymentTaskParameter): Single<Unit> {
        LOG.debug("Deleting deployment. Name=${parameter.name}, CorellationId=${taskContext.corellationId}")

        val genericResourceService = api.genericResources().manager().inner().azureClient.retrofit().create(GenericResourceService::class.java)
        return api
                .deployments()
                .getByResourceGroupAsync(parameter.resourceGroupName, parameter.name)
                .onErrorResumeNext {
                    LOG.debug("Deployment ${parameter.name} in group ${parameter.resourceGroupName} was not found. CorellationId=${taskContext.corellationId}", it)
                    Observable.empty()
                }
                .flatMap { deployment: Deployment? ->
                    if (deployment == null) {
                        LOG.debug("Could not find deployment ${parameter.name} in group ${parameter.resourceGroupName}. Removing resource directly. CorellationId=${taskContext.corellationId}")
                        getVMResources(taskContext) {
                            api
                                .virtualMachines()
                                .getByResourceGroupAsync(parameter.resourceGroupName, parameter.name)
                        }
                            .concatMap { deleteResource(it, api, genericResourceService, taskContext) }
                            .takeLast(1)
                            .concatMap {
                                val subscriptionId = api.subscriptionId()
                                if (subscriptionId != null) {
                                    myNotifications.raise(
                                        AzureTaskVirtualMachineRemoved(
                                            api,
                                            taskContext,
                                            getVirtualMachineResource(subscriptionId, parameter).resourceId,
                                        )
                                    )
                                } else {
                                    Observable.just(Unit)
                                }
                            }
                    } else {
                        switchDeleteDeploymentStrategy(deployment, api, taskContext, genericResourceService, parameter)
                    }
                }
                .defaultIfEmpty(Unit)
                .last()
                .toSingle()
    }