/
vm.go
48 lines (40 loc) · 1.12 KB
/
vm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright 2023 VMware, Inc.
// SPDX-License-Identifier: BSD-2-Clause
package pkg
import (
"fmt"
"time"
"github.com/vmware-labs/marketplace-cli/v2/internal/models"
)
func makeUniqueFileID() string {
now := time.Now().UnixNano() / int64(time.Millisecond)
return fmt.Sprintf("fileuploader%d.url", now)
}
func (m *Marketplace) UploadVM(vmFile string, product *models.Product, version *models.Version) (*models.Product, error) {
hashString, err := Hash(vmFile, models.HashAlgoSHA1)
if err != nil {
return nil, err
}
uploader, err := m.GetUploader(product.PublisherDetails.OrgId)
if err != nil {
return nil, err
}
filename, fileUrl, err := uploader.UploadProductFile(vmFile)
if err != nil {
return nil, err
}
product.PrepForUpdate()
product.ProductDeploymentFiles = []*models.ProductDeploymentFile{
{
Name: filename,
AppVersion: version.Number,
Url: fileUrl,
HashAlgo: models.HashAlgoSHA1,
HashDigest: hashString,
IsRedirectUrl: false,
UniqueFileID: makeUniqueFileID(),
VersionList: []string{},
},
}
return m.PutProduct(product, version.IsNewVersion)
}