package io.cattle.platform.host.stats.api; import io.cattle.platform.api.link.LinkHandler; import io.cattle.platform.archaius.util.ArchaiusUtil; import io.cattle.platform.core.constants.HostConstants; import io.cattle.platform.core.constants.InstanceConstants; import io.cattle.platform.core.model.Host; import io.cattle.platform.core.model.Instance; import io.cattle.platform.docker.util.DockerUtils; import io.cattle.platform.host.model.HostApiAccess; import io.cattle.platform.host.service.HostApiService; import io.cattle.platform.host.stats.utils.StatsConstants; import io.cattle.platform.object.ObjectManager; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.inject.Inject; import com.netflix.config.DynamicStringProperty; @Deprecated public class StatsLinkHandler implements LinkHandler { private static final DynamicStringProperty HOST_STATS_PATH = ArchaiusUtil.getString("host.stats.path"); HostApiService hostApiService; ObjectManager objectManager; @Override public String[] getTypes() { List<String> types = new ArrayList<>(InstanceConstants.CONTAINER_LIKE); types.add(HostConstants.TYPE); return types.toArray(new String[types.size()]); } @Override public boolean handles(String type, String id, String link, ApiRequest request) { return StatsConstants.LINK_STATS.equals(link); } @Override public Object link(String name, Object obj, ApiRequest request) throws IOException { Host host = null; Instance instance = null; if (obj instanceof Instance) { instance = (Instance) obj; host = DockerUtils.getHostFromContainer(objectManager, instance); } else if (obj instanceof Host) { host = (Host) obj; } if (host == null) { return null; } String[] pathSegments = null; if (instance != null) { pathSegments = new String[] { HOST_STATS_PATH.get(), DockerUtils.getDockerIdentifier(instance) }; } else { pathSegments = new String[] { HOST_STATS_PATH.get() }; } HostApiAccess apiAccess = hostApiService.getAccess(request, host.getId(), Collections.<String, Object> emptyMap(), pathSegments); if (apiAccess == null) { return null; } StatsAccess statsAccess = new StatsAccess(); statsAccess.setToken(apiAccess.getAuthenticationToken()); statsAccess.setUrl(apiAccess.getUrl()); return statsAccess; } public HostApiService getHostApiService() { return hostApiService; } @Inject public void setHostApiService(HostApiService hostApiService) { this.hostApiService = hostApiService; } public ObjectManager getObjectManager() { return objectManager; } @Inject public void setObjectManager(ObjectManager objectManager) { this.objectManager = objectManager; } }