package org.zstack.test.deployer;
import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.zstack.header.storage.backup.BackupStorageInventory;
import org.zstack.sdk.AddSftpBackupStorageAction;
import org.zstack.simulator.storage.backup.sftp.SftpBackupStorageSimulatorConfig;
import org.zstack.storage.backup.sftp.SftpBackupStorageConstant;
import org.zstack.test.Api;
import org.zstack.test.ApiSenderException;
import org.zstack.test.deployer.schema.DeployerConfig;
import org.zstack.test.deployer.schema.SftpBackupStorageConfig;
import org.zstack.utils.gson.JSONObjectUtil;
import java.util.List;
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE)
public class SftpBackupStorageDeployer implements BackupStorageDeployer<SftpBackupStorageConfig> {
@Autowired
private SftpBackupStorageSimulatorConfig simulatorConfig;
@Override
public Class<SftpBackupStorageConfig> getSupportedDeployerClassType() {
return SftpBackupStorageConfig.class;
}
@Override
public void deploy(List<SftpBackupStorageConfig> backupStorages, DeployerConfig config, Deployer deployer) throws ApiSenderException {
Api api = deployer.getApi();
for (SftpBackupStorageConfig bs : backupStorages) {
simulatorConfig.totalCapacity = deployer.parseSizeCapacity(bs.getTotalCapacity());
simulatorConfig.availableCapacity = deployer.parseSizeCapacity(bs.getAvailableCapacity());
AddSftpBackupStorageAction action = new AddSftpBackupStorageAction();
action.sessionId = api.getAdminSession().getUuid();
action.name = bs.getName();
action.url = bs.getUrl();
action.type = SftpBackupStorageConstant.SFTP_BACKUP_STORAGE_TYPE;
action.hostname = bs.getHostname();
action.username = bs.getUsername();
action.password = bs.getPassword();
AddSftpBackupStorageAction.Result res = action.call().throwExceptionIfError();
BackupStorageInventory inv = JSONObjectUtil.rehashObject(res.value.getInventory(), BackupStorageInventory.class);
deployer.backupStorages.put(bs.getName(), inv);
}
}
}