如何解决如何使用 terraTest 列出所有现有的 VM
熟练程度:新手
有没有办法使用 terratest 列出所有现有的 VM 名称?我确实尝试运行下面的代码,但显然参考用于创建 VM,但我希望列出所有现有的 VM,而不创建新的。有人可以帮我吗?
注意:我尝试运行以下代码仅用于学习目的,但尚未成功。
来源:https://github.com/gruntwork-io/terratest/blob/master/modules/azure/compute.go
package azure
import (
"context"
"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute"
"github.com/gruntwork-io/terratest/modules/testing"
"github.com/stretchr/testify/require"
)
// ListVirtualMachinesForResourceGroup gets a list of all Virtual Machine names in the specified Resource Group.
// This function would fail the test if there is an error.
func ListVirtualMachinesForResourceGroup(t testing.TestingT,resGroupName string,subscriptionID string) []string {
vms,err := ListVirtualMachinesForResourceGroupE(resGroupName,subscriptionID)
require.NoError(t,err)
return vms
}
// ListVirtualMachinesForResourceGroupE gets a list of all Virtual Machine names in the specified Resource Group.
func ListVirtualMachinesForResourceGroupE(resourceGroupName string,subscriptionID string) ([]string,error) {
var vmDetails []string
vmClient,err := GetVirtualMachineClientE(subscriptionID)
if err != nil {
return nil,err
}
vms,err := vmClient.List(context.Background(),resourceGroupName)
if err != nil {
return nil,err
}
for _,v := range vms.Values() {
vmDetails = append(vmDetails,*v.Name)
}
return vmDetails,nil
}
func GetVirtualMachineClientE(subscriptionID string) (*compute.VirtualMachinesClient,error) {
// snippet-tag-start::client_factory_example.helper
// Create a VM client
vmClient,err := CreateVirtualMachinesClientE(subscriptionID)
if err != nil {
return nil,err
}
// snippet-tag-end::client_factory_example.helper
// Create an authorizer
authorizer,err := NewAuthorizer()
if err != nil {
return nil,err
}
// Attach authorizer to the client
vmClient.Authorizer = *authorizer
return &vmClient,nil
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。