package com.sequenceiq.cloudbreak.cloud; import java.util.List; import com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext; import com.sequenceiq.cloudbreak.cloud.model.CloudInstance; import com.sequenceiq.cloudbreak.cloud.model.CloudResource; import com.sequenceiq.cloudbreak.cloud.model.CloudVmMetaDataStatus; /** * Cloudbreak collects metadata about VM instances like private and floating (public) addresses. */ public interface MetadataCollector { /** * Status with the collected metadata. * * @param authenticatedContext the authenticated context which holds the client object * @param resources resources managed by Cloudbreak, used to figure out which resources are associated with the given VMs (e.g network port) * @param vms the VM instances for which the metadata needs to be collected * @return status of instances including the metadata */ List<CloudVmMetaDataStatus> collect(AuthenticatedContext authenticatedContext, List<CloudResource> resources, List<CloudInstance> vms); }