package org.zstack.storage.ceph;
import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.beans.factory.annotation.Configurable;
import org.zstack.storage.ceph.primary.CephPrimaryStorageMonBase;
import org.zstack.storage.ceph.primary.CephPrimaryStorageMonVO;
import org.zstack.storage.volume.DistributedVolumeOperateInterface;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
import java.util.Random;
import java.util.Set;
/**
* Created by mingjian.deng on 16/11/9.
*/
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE)
public class CephVolumeOperate implements DistributedVolumeOperateInterface {
private static final CLogger logger = Utils.getLogger(CephVolumeOperate.class);
Set<CephPrimaryStorageMonVO> monsSet;
public CephPrimaryStorageMonBase chooseTargetVmUuid() {
CephPrimaryStorageMonBase mon = getRandomMon(monsSet);
return mon == null? null : mon;
}
private CephPrimaryStorageMonBase getRandomMon(final Set<CephPrimaryStorageMonVO> monsSet) {
int i = 0;
if(monsSet == null)
return null;
else {
StringBuffer buff = new StringBuffer();
buff.append("get monsSet, monAddr is: ");
for (CephPrimaryStorageMonVO monvo: monsSet){
buff.append(monvo.getMonAddr());
buff.append(",");
}
logger.debug(buff.substring(0, buff.lastIndexOf(",")));
}
int random = new Random().nextInt(monsSet.size());
for(CephPrimaryStorageMonVO vo: monsSet){
if(i ++ == random){
return new CephPrimaryStorageMonBase(vo);
}
}
return null;
}
@Override
public String exportFile(String srcPath, String desPath) {
return null;
}
@Override
public void importFile(String srcPath, String desPath) {
}
public Set<CephPrimaryStorageMonVO> getMonsSet() {
return monsSet;
}
public void setMonsSet(Set<CephPrimaryStorageMonVO> monsSet) {
this.monsSet = monsSet;
}
}