package com.sungardas.enhancedsnapshots.service.impl; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig; import com.sungardas.enhancedsnapshots.aws.dynamodb.model.Configuration; import com.sungardas.enhancedsnapshots.aws.dynamodb.model.User; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; @Service("CreateAppConfiguration") @Profile("dev") public class CreateAppConfigurationDev { @Value("${enhancedsnapshots.default.tempVolumeType}") private String tempVolumeType; @Value("${enhancedsnapshots.default.tempVolumeIopsPerGb}") private int tempVolumeIopsPerGb; @Value("${enhancedsnapshots.default.restoreVolumeType}") private String restoreVolumeType; @Value("${enhancedsnapshots.default.restoreVolumeIopsPerGb}") private int restoreVolumeIopsPerGb; @Value("${enhancedsnapshots.default.amazon.retry.count}") private int amazonRetryCount; @Value("${enhancedsnapshots.default.amazon.retry.sleep}") private int amazonRetrySleep; @Value("${enhancedsnapshots.default.queue.size}") private int queueSize; @Value("${enhancedsnapshots.default.sdfs.volume.config.path}") private String sdfsConfigPath; @Value("${enhancedsnapshots.default.sdfs.backup.file.name}") private String sdfsStateBackupFileName; @Value("${enhancedsnapshots.default.retention.cron}") private String defaultRetentionCronExpression; @Value("${enhancedsnapshots.default.polling.rate}") private int defaultPollingRate; @Value("${enhancedsnapshots.default.sdfs.local.cache.size}") private int sdfsLocalCacheSize; @Value("${enhancedsnapshots.default.wait.time.before.new.sync}") private int defaultWaitTimeBeforeNewSyncWithAWS; @Value("${enhancedsnapshots.default.max.wait.time.to.detach.volume}") private int defaultMaxWaitTimeToDetachVolume; @Autowired private AmazonDynamoDB amazonDynamoDB; @Autowired private DynamoDBMapperConfig dynamoDBMapperConfig; @PostConstruct private void init() { DynamoDBMapper mapper = new DynamoDBMapper(amazonDynamoDB, dynamoDBMapperConfig); Configuration configuration = getDevConf(); mapper.save(configuration); User user = new User("admin@admin", DigestUtils.sha512Hex("admin"), "admin", "dev", "dev"); user.setId("DEV"); mapper.save(user); } private Configuration getDevConf() { Configuration configuration = new Configuration(); configuration.setConfigurationId("DEV"); configuration.setEc2Region(Regions.EU_WEST_1.getName()); configuration.setSdfsMountPoint(""); configuration.setSdfsVolumeName(""); configuration.setRestoreVolumeIopsPerGb(restoreVolumeIopsPerGb); configuration.setRestoreVolumeType(restoreVolumeType); configuration.setTempVolumeIopsPerGb(tempVolumeIopsPerGb); configuration.setTempVolumeType(tempVolumeType); configuration.setSdfsLocalCacheSize(sdfsLocalCacheSize); configuration.setAmazonRetryCount(amazonRetryCount); configuration.setAmazonRetrySleep(amazonRetrySleep); configuration.setMaxQueueSize(queueSize); configuration.setSdfsConfigPath(sdfsConfigPath); configuration.setSdfsBackupFileName(sdfsStateBackupFileName); configuration.setRetentionCronExpression(defaultRetentionCronExpression); configuration.setWorkerDispatcherPollingRate(defaultPollingRate); configuration.setWaitTimeBeforeNewSyncWithAWS(defaultWaitTimeBeforeNewSyncWithAWS); configuration.setMaxWaitTimeToDetachVolume(defaultMaxWaitTimeToDetachVolume); configuration.setS3Bucket("com.sungardas.enhancedsnapshots.dev"); configuration.setSdfsSize(500); configuration.setSdfsVolumeName("awspool"); configuration.setSdfsMountPoint("/mnt/awspool"); configuration.setTaskHistoryTTS(300000); configuration.setSsoLoginMode(true); return configuration; } }