diff --git a/vsphere/internal/helper/contentlibrary/content_library_helper.go b/vsphere/internal/helper/contentlibrary/content_library_helper.go index edd44af06..d6e4a88ae 100644 --- a/vsphere/internal/helper/contentlibrary/content_library_helper.go +++ b/vsphere/internal/helper/contentlibrary/content_library_helper.go @@ -191,6 +191,7 @@ func CreateLibraryItem(c *rest.Client, l *library.Library, name string, desc str isOva := false isLocal := true + isIso := false if strings.HasPrefix(file, "http") { isLocal = false @@ -198,6 +199,9 @@ func CreateLibraryItem(c *rest.Client, l *library.Library, name string, desc str if strings.HasSuffix(file, ".ova") { isOva = true } + if strings.HasSuffix(file, ".iso") { + isIso = true + } ovfDescriptor, err := ovfdeploy.GetOvfDescriptor(file, isOva, isLocal, true) if err != nil { @@ -207,8 +211,10 @@ func CreateLibraryItem(c *rest.Client, l *library.Library, name string, desc str switch { case isLocal && isOva: return &id, uploadSession.deployLocalOva(file, ovfDescriptor) - case isLocal && !isOva: + case isLocal && !isOva && !isIso: return &id, uploadSession.deployLocalOvf(file, ovfDescriptor) + case isLocal && isIso: + return &id, uploadSession.deployLocalIso(file) case !isLocal && isOva: return &id, uploadSession.deployRemoteOva(file, ovfDescriptor) case !isLocal && !isOva: @@ -274,6 +280,13 @@ func (uploadSession *libraryUploadSession) deployLocalOva(file string, ovfDescri return uploadSession.uploadOvaDisksFromLocal(file, e) } +func (uploadSession *libraryUploadSession) deployLocalIso(file string) error { + if err := uploadSession.uploadLocalFile(file); err != nil { + return err + } + return nil +} + type libraryUploadSession struct { ContentLibraryManager *library.Manager RestClient *rest.Client