GovMomi REST/VAPI API不支持ESX()模拟器来创建REST客户端?

发布于 2025-02-11 19:37:15 字数 1200 浏览 4 评论 0原文

我正在使用用于与V中心互动的VSPHERE GOVMOMI/VAPI REST客户端进行一些单元测试。

var insecure bool = true
type RestClient struct {
 url *url.URL
 restClient *rest.Client
}

func (c *RestClient) GetRestClient(ctx context.Context) (*rest.Client, error){
 soapClient := soap.NewClient(c.url, insecure)
 vim25Client, err := vim25.NewClient(ctx, soapClient)
 if err != nil {
  return nil, err
 }
 c.restClient = rest.NewClient(vim25Client)
 err = c.restClient.Login(ctx, c.url.User)
 if err != nil {
  return nil, err
 }
 return c.restClient, nil
}

我使用simulator.esx()模拟模型。

func TestGetRestClient(t *testing.T){
 ctx := context.Background()
 model := simulator.ESX()
 defer model.Remove()
 err := model.Create()
 if err != nil {
  t.Fatal(err)
 }
 server := model.Service.NewServer()
 defer server.Close()
 url := server.URL
 var client RestClient = RestClient{url: url,}
 _, err := client.GetRestClient(ctx)
 if err != nil {
  t.Errorf("err = %v", err)
  return
 }
}

但是,在创建剩余的客户端并尝试登录()之后,我知道

error= POST http://127.0.0.1:36655/rest/com/vmware/cis/session: 404 Not Found

我做错了什么吗?我应该在VMware的GovMomi中使用其他模拟器对VAPI/REST客户端使用。任何帮助都将不胜感激

I was doing some unit testing with vSphere Govmomi/vapi REST client used to interact with V Center.

var insecure bool = true
type RestClient struct {
 url *url.URL
 restClient *rest.Client
}

func (c *RestClient) GetRestClient(ctx context.Context) (*rest.Client, error){
 soapClient := soap.NewClient(c.url, insecure)
 vim25Client, err := vim25.NewClient(ctx, soapClient)
 if err != nil {
  return nil, err
 }
 c.restClient = rest.NewClient(vim25Client)
 err = c.restClient.Login(ctx, c.url.User)
 if err != nil {
  return nil, err
 }
 return c.restClient, nil
}

I used simulator.ESX() to simulate the model.

func TestGetRestClient(t *testing.T){
 ctx := context.Background()
 model := simulator.ESX()
 defer model.Remove()
 err := model.Create()
 if err != nil {
  t.Fatal(err)
 }
 server := model.Service.NewServer()
 defer server.Close()
 url := server.URL
 var client RestClient = RestClient{url: url,}
 _, err := client.GetRestClient(ctx)
 if err != nil {
  t.Errorf("err = %v", err)
  return
 }
}

But after creating the rest client and trying to login(), I get

error= POST http://127.0.0.1:36655/rest/com/vmware/cis/session: 404 Not Found

Am I doing something wrong? Am I supposed to use a different simulator for vapi/rest clients in vmware's govmomi. Any help would be highly appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生一个溪 2025-02-18 19:37:15

我自己面对这个问题。经过VAPI/REST模拟器的源代码后,发现他们在内部仅支持VPX模拟器。使用

model := simulator.VPX()

代替

model := simulator.ESX()

单元测试,不要尝试直接调用API,而是存在身份验证问题。VAPI/REST API提供具有用于测试目的的功能。

simulator.Test(func(ctx context.Context, vc *vim25.Client)

此函数会自动生成一个 *vim25.Client对象,并且也可以为其提供VPX Simulator实例。有关更多信息,请检查文档。

检查在官方源代码中

Was facing this issue myself. Upon going through the source code of vapi/rest simulators, found out that they are internally supporting only VPX simulators. Use

model := simulator.VPX()

instead of

model := simulator.ESX()

In unit testing,do not try to call API directly, there are authentication issues.The vapi/rest API provides with a functionality for testing purposes.

simulator.Test(func(ctx context.Context, vc *vim25.Client)

This function automatically generates a *vim25.Client object and also it can be provided with a VPX simulator instance.For more info,check the documentation.

Check it here in the official source code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文