Not sure how do we create NewEnvironmentCredential from client_id, client_secret and tenant_id.
I have done same thing for GO, but not able to do it in python:
func GetAzureKeyPairsAgainstRegion(ctx context.Context, resourceGroup string, azureCredentials AccountCredentials) ([]mcloudintegration.KeyPairDetail, error) {
logger.GetLogger().Info("Get Azure key pairs activity started.")
cred, _ := NewEnvironmentCredential(ctx, azureCredentials)
sshKeysClient := armcompute.NewSSHPublicKeysClient(azureCredentials.SubscriptionID, cred, nil)
pager := sshKeysClient.ListByResourceGroup(resourceGroup, nil)
var sshKeys []*armcompute.SSHPublicKeyResource
for {
nextResult := pager.NextPage(ctx)
if err := pager.Err(); err != nil {
return nil, errors.Wrap(err, "failed to advance page.")
}
if !nextResult {
break
}
sshKeys = append(sshKeys, pager.PageResponse().Value...)
}
var KeyPairs []mcloudintegration.KeyPairDetail
for _, sshKey := range sshKeys {
KeyPairs = append(KeyPairs, mcloudintegration.KeyPairDetail{
KeyName: *sshKey.Name,
KeyValue: *sshKey.Properties.PublicKey,
})
}
return KeyPairs, nil
I was able to get keys in the following way:
def get_key_pairs(azure_account_details, resource_group):
try:
logger.debug(f"getting azure key pairs for resource group : {resource_group}")
# Authenticates as a service principal using a client secret
credential = ClientSecretCredential(
azure_account_details.get("tenant_id"),
azure_account_details.get("client_id"),
azure_account_details.get("client_secret"),
)
resource_client = ComputeManagementClient(
credential, azure_account_details.get("subscription_id")
)
# Lists all SSH public keys in the specified resource group.
ssh_keys = resource_client.ssh_public_keys.list_by_resource_group(
resource_group_name=resource_group
)
key_pairs = []
for ssh_key in ssh_keys:
key_name = ssh_key.name
key_value = ssh_key.public_key
key = {"key_name": key_name, "key_value": key_value}
key_pairs.append(key)
logger.debug(f"azure key pairs : {key_pairs}")
return key_pairs
except Exception as error:
logger.error("Error occurred during getting azure key pairs: " + str(error))
return []