package io.cattle.platform.docker.machine.api.filter; import io.cattle.platform.core.constants.MachineConstants; import io.cattle.platform.core.model.PhysicalHost; import io.cattle.platform.framework.secret.SecretsService; import io.github.ibuildthecloud.gdapi.model.Resource; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.response.ResourceOutputFilter; import javax.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MachineOutputFilter implements ResourceOutputFilter { private static final Logger log = LoggerFactory.getLogger(MachineOutputFilter.class); @Inject SecretsService serviceService; @Override public Resource filter(ApiRequest request, Object original, Resource converted) { if (!(original instanceof PhysicalHost)) { return converted; } Object extracted = converted.getFields().get(MachineConstants.EXTRACTED_CONFIG_FIELD); if (extracted instanceof String) { try { if (((String) extracted).startsWith("{")) { extracted = serviceService.decrypt(((PhysicalHost)original).getAccountId(), (String)extracted); } } catch (Exception e) { log.error("Failed to decrypt machine extracted config", e); } converted.getFields().put(MachineConstants.EXTRACTED_CONFIG_FIELD, extracted); } return converted; } @Override public String[] getTypes() { return new String[] { MachineConstants.KIND_MACHINE }; } @Override public Class<?>[] getTypeClasses() { return new Class<?>[0]; } }