mirror of
https://github.com/rclone/rclone.git
synced 2024-12-11 17:51:12 +01:00
92 lines
2.5 KiB
Go
92 lines
2.5 KiB
Go
|
package vmutils
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
vm "github.com/Azure/azure-sdk-for-go/management/virtualmachine"
|
||
|
)
|
||
|
|
||
|
// ConfigureDeploymentFromRemoteImage configures VM Role to deploy from a remote
|
||
|
// image source. "remoteImageSourceURL" can be any publically accessible URL to
|
||
|
// a VHD file, including but not limited to a SAS Azure Storage blob url. "os"
|
||
|
// needs to be either "Linux" or "Windows". "label" is optional.
|
||
|
func ConfigureDeploymentFromRemoteImage(
|
||
|
role *vm.Role,
|
||
|
remoteImageSourceURL string,
|
||
|
os string,
|
||
|
newDiskName string,
|
||
|
destinationVhdStorageURL string,
|
||
|
label string) error {
|
||
|
if role == nil {
|
||
|
return fmt.Errorf(errParamNotSpecified, "role")
|
||
|
}
|
||
|
|
||
|
role.OSVirtualHardDisk = &vm.OSVirtualHardDisk{
|
||
|
RemoteSourceImageLink: remoteImageSourceURL,
|
||
|
MediaLink: destinationVhdStorageURL,
|
||
|
DiskName: newDiskName,
|
||
|
OS: os,
|
||
|
DiskLabel: label,
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// ConfigureDeploymentFromPlatformImage configures VM Role to deploy from a
|
||
|
// platform image. See osimage package for methods to retrieve a list of the
|
||
|
// available platform images. "label" is optional.
|
||
|
func ConfigureDeploymentFromPlatformImage(
|
||
|
role *vm.Role,
|
||
|
imageName string,
|
||
|
mediaLink string,
|
||
|
label string) error {
|
||
|
if role == nil {
|
||
|
return fmt.Errorf(errParamNotSpecified, "role")
|
||
|
}
|
||
|
|
||
|
role.OSVirtualHardDisk = &vm.OSVirtualHardDisk{
|
||
|
SourceImageName: imageName,
|
||
|
MediaLink: mediaLink,
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// ConfigureDeploymentFromPublishedVMImage configures VM Role to deploy from
|
||
|
// a published (public) VM image.
|
||
|
func ConfigureDeploymentFromPublishedVMImage(
|
||
|
role *vm.Role,
|
||
|
vmImageName string,
|
||
|
mediaLocation string,
|
||
|
provisionGuestAgent bool) error {
|
||
|
if role == nil {
|
||
|
return fmt.Errorf(errParamNotSpecified, "role")
|
||
|
}
|
||
|
|
||
|
role.VMImageName = vmImageName
|
||
|
role.MediaLocation = mediaLocation
|
||
|
role.ProvisionGuestAgent = provisionGuestAgent
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// ConfigureDeploymentFromUserVMImage configures VM Role to deploy from a previously
|
||
|
// captured (user generated) VM image.
|
||
|
func ConfigureDeploymentFromUserVMImage(
|
||
|
role *vm.Role,
|
||
|
vmImageName string) error {
|
||
|
if role == nil {
|
||
|
return fmt.Errorf(errParamNotSpecified, "role")
|
||
|
}
|
||
|
|
||
|
role.VMImageName = vmImageName
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// ConfigureDeploymentFromExistingOSDisk configures VM Role to deploy from an
|
||
|
// existing disk. 'label' is optional.
|
||
|
func ConfigureDeploymentFromExistingOSDisk(role *vm.Role, osDiskName, label string) error {
|
||
|
role.OSVirtualHardDisk = &vm.OSVirtualHardDisk{
|
||
|
DiskName: osDiskName,
|
||
|
DiskLabel: label,
|
||
|
}
|
||
|
return nil
|
||
|
}
|