package com.sequenceiq.cloudbreak.cloud.azure;
import java.util.Map;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import com.sequenceiq.cloudbreak.cloud.CredentialConnector;
import com.sequenceiq.cloudbreak.cloud.azure.client.AzureClient;
import com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext;
import com.sequenceiq.cloudbreak.cloud.context.CloudContext;
import com.sequenceiq.cloudbreak.cloud.credential.CredentialNotifier;
import com.sequenceiq.cloudbreak.cloud.model.CloudCredentialStatus;
import com.sequenceiq.cloudbreak.cloud.model.CredentialStatus;
import com.sequenceiq.cloudbreak.cloud.model.ExtendedCloudCredential;
@Service
public class AzureCredentialConnector implements CredentialConnector {
private static final Logger LOGGER = LoggerFactory.getLogger(AzureCredentialConnector.class);
@Inject
private AzureInteractiveLogin azureInteractiveLogin;
@Override
public CloudCredentialStatus verify(AuthenticatedContext authenticatedContext) {
try {
AzureClient client = authenticatedContext.getParameter(AzureClient.class);
client.getStorageAccounts().list();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
return new CloudCredentialStatus(authenticatedContext.getCloudCredential(), CredentialStatus.FAILED, e, e.getMessage());
}
return new CloudCredentialStatus(authenticatedContext.getCloudCredential(), CredentialStatus.VERIFIED);
}
@Override
public CloudCredentialStatus create(AuthenticatedContext authenticatedContext) {
return new CloudCredentialStatus(authenticatedContext.getCloudCredential(), CredentialStatus.CREATED);
}
@Override
public Map<String, String> interactiveLogin(CloudContext cloudContext, ExtendedCloudCredential extendedCloudCredential,
CredentialNotifier credentialNotifier) {
return azureInteractiveLogin.login(cloudContext, extendedCloudCredential, credentialNotifier);
}
@Override
public CloudCredentialStatus delete(AuthenticatedContext authenticatedContext) {
return new CloudCredentialStatus(authenticatedContext.getCloudCredential(), CredentialStatus.DELETED);
}
}