package io.cattle.platform.servicediscovery.api.service.impl;
import io.cattle.platform.core.model.Certificate;
import io.cattle.platform.db.jooq.dao.impl.AbstractJooqDao;
import io.cattle.platform.object.ObjectManager;
import io.cattle.platform.servicediscovery.api.resource.ServiceDiscoveryConfigItem;
import io.cattle.platform.servicediscovery.api.service.RancherConfigToComposeFormatter;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
@Named
public class RancherCertificatesToComposeFormatter extends AbstractJooqDao
implements RancherConfigToComposeFormatter {
@Inject
ObjectManager objManager;
@Override
@SuppressWarnings("unchecked")
public Object format(ServiceDiscoveryConfigItem item, Object valueToTransform) {
if (item.getDockerName().equalsIgnoreCase(ServiceDiscoveryConfigItem.CERTIFICATES.getDockerName())) {
List<Number> certificateIds = (List<Number>) valueToTransform;
List<String> certificateNames = new ArrayList<>();
for (Number certificateId : certificateIds) {
String certName = getCertName(certificateId);
if (StringUtils.isNotBlank(certName)) {
certificateNames.add(certName);
}
}
return certificateNames;
} else if (item.getDockerName().equals(ServiceDiscoveryConfigItem.DEFAULT_CERTIFICATE.getDockerName())) {
Integer defaultCertId = (Integer) valueToTransform;
return getCertName(defaultCertId);
} else {
return null;
}
}
private String getCertName(Number certId) {
if (certId == null) {
return null;
}
Certificate cert = objManager.loadResource(Certificate.class, certId.longValue());
return cert == null ? null : cert.getName();
}
}