package com.sequenceiq.samples.core.service.simple;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.CreateKeyPairRequest;
import com.amazonaws.services.ec2.model.CreateKeyPairResult;
import com.amazonaws.services.ec2.model.DescribeKeyPairsResult;
import com.amazonaws.services.ec2.model.KeyPairInfo;
import com.sequenceiq.samples.core.service.KeyPairService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class SimpleKeyPairService implements KeyPairService {
@Autowired
private AmazonEC2ClientFactory amazonEC2ClientFactory;
public CreateKeyPairResult createKeyPair(AmazonEC2Client client, String keyName) {
CreateKeyPairRequest createKeyPairRequest = new CreateKeyPairRequest().withKeyName(keyName);
CreateKeyPairResult createKeyPairResult = client.createKeyPair(createKeyPairRequest);
return createKeyPairResult;
}
@Override
public CreateKeyPairResult createKeyPair(AWSCredentials credentials, String keyName) {
return createKeyPair(amazonEC2ClientFactory.createAmazonEC2Client(credentials), keyName);
}
private List<KeyPairInfo> listKeyPairs(AmazonEC2Client client) {
DescribeKeyPairsResult describeKeyPairsResult = client.describeKeyPairs();
return describeKeyPairsResult.getKeyPairs();
}
@Override
public List<KeyPairInfo> listKeyPairs(AWSCredentials credentials) {
return listKeyPairs(amazonEC2ClientFactory.createAmazonEC2Client(credentials));
}
private String describeKeyPairFingerPrint(AmazonEC2Client client, String keyName) {
DescribeKeyPairsResult describeKeyPairsResult = client.describeKeyPairs();
for (KeyPairInfo keyPairInfo : describeKeyPairsResult.getKeyPairs()) {
if (keyPairInfo.getKeyName().equals(keyName)) {
return keyPairInfo.getKeyFingerprint();
}
}
return "";
}
@Override
public String describeKeyPairFingerPrint(AWSCredentials credentials, String keyName) {
return describeKeyPairFingerPrint(amazonEC2ClientFactory.createAmazonEC2Client(credentials), keyName);
}
}