@Override
public S3 addS3(final AddS3Cmd addS3Cmd) throws DiscoveryException {
this.enforceS3PreConditions();
final S3VO s3VO = new S3VO(UUID.randomUUID().toString(),
addS3Cmd.getAccessKey(), addS3Cmd.getSecretKey(),
addS3Cmd.getEndPoint(), addS3Cmd.getBucketName(),
addS3Cmd.getHttpsFlag(), addS3Cmd.getConnectionTimeout(),
addS3Cmd.getMaxErrorRetry(), addS3Cmd.getSocketTimeout(), now());
this.validateFields(s3VO);
final S3TO s3 = s3VO.toS3TO();
this.verifyConnection(s3);
this.verifyBuckets(s3);
return this.s3Dao.persist(s3VO);