package com.sequenceiq.cloudbreak.cloud.template; import java.util.List; import com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext; import com.sequenceiq.cloudbreak.cloud.model.CloudResource; import com.sequenceiq.cloudbreak.cloud.model.CloudResourceStatus; import com.sequenceiq.cloudbreak.cloud.template.context.ResourceBuilderContext; /** * Resource creation and deletion requests sent to the provider later needs status checking. The implementation supposed to provide a defined * {@link com.sequenceiq.cloudbreak.cloud.model.ResourceStatus} to track the progress. If the resource status reaches a permanent state the flow will continue. */ public interface ResourceChecker<C extends ResourceBuilderContext> { /** * Checks the status of the resource creation/deletion. This method will be called as long as the status is in <b>TRANSIENT</b> state with a timed delay. * * @param context Generic context object passed along with the flow to all methods. It is created by the {@link ResourceContextBuilder}. * @param auth Authenticated context is provided to be able to send the requests to the cloud provider. * @param resources List of resources to be checked. * @return Returns the status of the requested resources. */ List<CloudResourceStatus> checkResources(C context, AuthenticatedContext auth, List<CloudResource> resources); }