登录
首页 >  Golang >  Go问答

vCenter API教程:如何导入ova文件到vCenter?

来源:stackoverflow

时间:2024-02-10 15:45:19 261浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《vCenter API教程:如何导入ova文件到vCenter?》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我正在尝试使用 rest api 将 ova 文件上传到 vcenter 库。 为此(所有操作均使用 vcenter api 完成)

  1. 使用身份验证
  2. 获取数据存储
  3. 已创建库
  4. 已将项目添加到库
  5. 已创建更新会话
  6. 获取用于上传的端点
  7. 上传ova文件到vcenter

第1~6阶段已成功完成,但最后阶段我无法将ova文件上传到vcenter库。 当我调用 api 时,它返回 200 resp 代码,看起来上传成功完成。但事实上,我找不到在 vcenter 库上导入的任何 ova 文件,并且我可以看到错误“检测到解析标头时出错”

我的上传功能如下;

func UploadFile(client *http.Client, fileName, uploadEndpoint, sessionID string) (status bool, err error) {

file, err := os.Open(fileName)
if err != nil {
    return false, err
}
defer file.Close()

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, err := writer.CreateFormFile("file", filepath.Base(fileName))
if err != nil {
    return false, err
}
_, err = io.Copy(part, file)

err = writer.Close()
if err != nil {
    return false, err
}
//uploadEndpoint ;  https://ip252.ip-51-255-152.eu:443/cls/data/5a86158a-f818-4796-8bc1-e4d88a29dcd7/focal-server-cloudimg-amd64.ova

req, err := http.NewRequest("POST", uploadEndpoint, body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("vmware-api-session-id", sessionID)

resp, err := client.Do(req)
if err != nil {
    return false, err
}
defer resp.Body.Close()

return true, nil
}

正确答案


有点晚了,但 I made a script 会采用选定的 OVA,将其推送到指定的 vCenter,然后使用 PowerCLI 将其转换为模板。您可能会发现其中部分内容很有用。

本篇关于《vCenter API教程:如何导入ova文件到vCenter?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>