package io.cattle.platform.core.util;
import static io.cattle.platform.core.model.tables.VolumeTable.*;
import io.cattle.platform.core.constants.InstanceConstants;
import io.cattle.platform.core.model.Instance;
import io.cattle.platform.core.model.Volume;
import io.cattle.platform.object.ObjectManager;
import io.cattle.platform.object.util.DataAccessor;
import io.github.ibuildthecloud.gdapi.condition.Condition;
import io.github.ibuildthecloud.gdapi.condition.ConditionType;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class InstanceHelpers {
public static List<Long> extractVolumeIdsFromMounts(Instance instance) {
List<Long> volumeIds = new ArrayList<>();
Map<String, Object> dataVolumeMounts = DataAccessor.fieldMap(instance, InstanceConstants.FIELD_DATA_VOLUME_MOUNTS);
if (dataVolumeMounts != null) {
for (Map.Entry<String, Object> entry : dataVolumeMounts.entrySet()) {
if (entry.getValue() instanceof Number) {
volumeIds.add(((Number)entry.getValue()).longValue());
}
}
}
return volumeIds;
}
public static List<Volume> extractVolumesFromMounts(Instance instance, ObjectManager objectManager) {
List<Volume> volumes = new ArrayList<Volume>();
Map<String, Object> dataVolumeMounts = DataAccessor.fieldMap(instance, InstanceConstants.FIELD_DATA_VOLUME_MOUNTS);
List<Object> volumeIds = new ArrayList<Object>();
if (dataVolumeMounts != null) {
for (Map.Entry<String, Object> entry : dataVolumeMounts.entrySet()) {
if (entry.getValue() instanceof Number) {
volumeIds.add(((Number)entry.getValue()).longValue());
}
}
Condition condition = new Condition(ConditionType.IN, volumeIds);
volumes = objectManager.find(Volume.class, VOLUME.ID, condition);
}
return volumes;
}
}