Merge pull request #7061 from boumenot/pr-6773-caching-type
azure: configuration for disk caching
This commit is contained in:
commit
ce71932f95
|
@ -109,9 +109,9 @@ type Config struct {
|
||||||
ManagedImageResourceGroupName string `mapstructure:"managed_image_resource_group_name"`
|
ManagedImageResourceGroupName string `mapstructure:"managed_image_resource_group_name"`
|
||||||
ManagedImageName string `mapstructure:"managed_image_name"`
|
ManagedImageName string `mapstructure:"managed_image_name"`
|
||||||
ManagedImageStorageAccountType string `mapstructure:"managed_image_storage_account_type"`
|
ManagedImageStorageAccountType string `mapstructure:"managed_image_storage_account_type"`
|
||||||
|
managedImageStorageAccountType compute.StorageAccountTypes
|
||||||
ManagedImageOSDiskSnapshotName string `mapstructure:"managed_image_os_disk_snapshot_name"`
|
ManagedImageOSDiskSnapshotName string `mapstructure:"managed_image_os_disk_snapshot_name"`
|
||||||
ManagedImageDataDiskSnapshotPrefix string `mapstructure:"managed_image_data_disk_snapshot_prefix"`
|
ManagedImageDataDiskSnapshotPrefix string `mapstructure:"managed_image_data_disk_snapshot_prefix"`
|
||||||
managedImageStorageAccountType compute.StorageAccountTypes
|
|
||||||
manageImageLocation string
|
manageImageLocation string
|
||||||
|
|
||||||
// Deployment
|
// Deployment
|
||||||
|
@ -138,6 +138,8 @@ type Config struct {
|
||||||
|
|
||||||
// Additional Disks
|
// Additional Disks
|
||||||
AdditionalDiskSize []int32 `mapstructure:"disk_additional_size"`
|
AdditionalDiskSize []int32 `mapstructure:"disk_additional_size"`
|
||||||
|
DiskCachingType string `mapstructure:"disk_caching_type"`
|
||||||
|
diskCachingType compute.CachingTypes
|
||||||
|
|
||||||
// Runtime Values
|
// Runtime Values
|
||||||
UserName string
|
UserName string
|
||||||
|
@ -471,6 +473,10 @@ func provideDefaultValues(c *Config) {
|
||||||
c.managedImageStorageAccountType = compute.StorageAccountTypesStandardLRS
|
c.managedImageStorageAccountType = compute.StorageAccountTypesStandardLRS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.DiskCachingType == "" {
|
||||||
|
c.diskCachingType = compute.CachingTypesReadWrite
|
||||||
|
}
|
||||||
|
|
||||||
if c.ImagePublisher != "" && c.ImageVersion == "" {
|
if c.ImagePublisher != "" && c.ImageVersion == "" {
|
||||||
c.ImageVersion = DefaultImageVersion
|
c.ImageVersion = DefaultImageVersion
|
||||||
}
|
}
|
||||||
|
@ -745,6 +751,17 @@ func assertRequiredParametersSet(c *Config, errs *packer.MultiError) {
|
||||||
default:
|
default:
|
||||||
errs = packer.MultiErrorAppend(errs, fmt.Errorf("The managed_image_storage_account_type %q is invalid", c.ManagedImageStorageAccountType))
|
errs = packer.MultiErrorAppend(errs, fmt.Errorf("The managed_image_storage_account_type %q is invalid", c.ManagedImageStorageAccountType))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch c.DiskCachingType {
|
||||||
|
case string(compute.CachingTypesNone):
|
||||||
|
c.diskCachingType = compute.CachingTypesNone
|
||||||
|
case string(compute.CachingTypesReadOnly):
|
||||||
|
c.diskCachingType = compute.CachingTypesReadOnly
|
||||||
|
case "", string(compute.CachingTypesReadWrite):
|
||||||
|
c.diskCachingType = compute.CachingTypesReadWrite
|
||||||
|
default:
|
||||||
|
errs = packer.MultiErrorAppend(errs, fmt.Errorf("The disk_caching_type %q is invalid", c.DiskCachingType))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func assertManagedImageName(name, setting string) (bool, error) {
|
func assertManagedImageName(name, setting string) (bool, error) {
|
||||||
|
|
|
@ -48,6 +48,10 @@ func TestConfigShouldProvideReasonableDefaultValues(t *testing.T) {
|
||||||
if c.managedImageStorageAccountType == "" {
|
if c.managedImageStorageAccountType == "" {
|
||||||
t.Errorf("Expected 'managedImageStorageAccountType' to be populated, but it was empty!")
|
t.Errorf("Expected 'managedImageStorageAccountType' to be populated, but it was empty!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.diskCachingType == "" {
|
||||||
|
t.Errorf("Expected 'diskCachingType' to be populated, but it was empty!")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfigShouldBeAbleToOverrideDefaultedValues(t *testing.T) {
|
func TestConfigShouldBeAbleToOverrideDefaultedValues(t *testing.T) {
|
||||||
|
@ -57,6 +61,7 @@ func TestConfigShouldBeAbleToOverrideDefaultedValues(t *testing.T) {
|
||||||
builderValues["vm_size"] = "override_vm_size"
|
builderValues["vm_size"] = "override_vm_size"
|
||||||
builderValues["communicator"] = "ssh"
|
builderValues["communicator"] = "ssh"
|
||||||
builderValues["managed_image_storage_account_type"] = "Premium_LRS"
|
builderValues["managed_image_storage_account_type"] = "Premium_LRS"
|
||||||
|
builderValues["disk_caching_type"] = "None"
|
||||||
|
|
||||||
c, _, err := newConfig(builderValues, getPackerConfiguration())
|
c, _, err := newConfig(builderValues, getPackerConfiguration())
|
||||||
|
|
||||||
|
@ -87,6 +92,10 @@ func TestConfigShouldBeAbleToOverrideDefaultedValues(t *testing.T) {
|
||||||
if c.managedImageStorageAccountType != compute.StorageAccountTypesPremiumLRS {
|
if c.managedImageStorageAccountType != compute.StorageAccountTypesPremiumLRS {
|
||||||
t.Errorf("Expected 'managed_image_storage_account_type' to be set to 'Premium_LRS', but found %q!", c.managedImageStorageAccountType)
|
t.Errorf("Expected 'managed_image_storage_account_type' to be set to 'Premium_LRS', but found %q!", c.managedImageStorageAccountType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.diskCachingType != compute.CachingTypesNone {
|
||||||
|
t.Errorf("Expected 'disk_caching_type' to be set to 'None', but found %q!", c.diskCachingType)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfigShouldDefaultVMSizeToStandardA1(t *testing.T) {
|
func TestConfigShouldDefaultVMSizeToStandardA1(t *testing.T) {
|
||||||
|
@ -1165,6 +1174,27 @@ func TestConfigShouldRejectMalformedManageImageStorageAccountTypes(t *testing.T)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConfigShouldRejectMalformedDiskCachingType(t *testing.T) {
|
||||||
|
config := map[string]interface{}{
|
||||||
|
"custom_managed_image_resource_group_name": "ignore",
|
||||||
|
"custom_managed_image_name": "ignore",
|
||||||
|
"location": "ignore",
|
||||||
|
"subscription_id": "ignore",
|
||||||
|
"communicator": "none",
|
||||||
|
"managed_image_resource_group_name": "ignore",
|
||||||
|
"managed_image_name": "ignore",
|
||||||
|
"disk_caching_type": "--invalid--",
|
||||||
|
|
||||||
|
// Does not matter for this test case, just pick one.
|
||||||
|
"os_type": constants.Target_Linux,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _, err := newConfig(config, getPackerConfiguration())
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected config to reject custom and platform input for a managed image build")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestConfigShouldAcceptManagedImageStorageAccountTypes(t *testing.T) {
|
func TestConfigShouldAcceptManagedImageStorageAccountTypes(t *testing.T) {
|
||||||
config := map[string]interface{}{
|
config := map[string]interface{}{
|
||||||
"custom_managed_image_resource_group_name": "ignore",
|
"custom_managed_image_resource_group_name": "ignore",
|
||||||
|
@ -1190,6 +1220,31 @@ func TestConfigShouldAcceptManagedImageStorageAccountTypes(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestConfigShouldAcceptDiskCachingTypes(t *testing.T) {
|
||||||
|
config := map[string]interface{}{
|
||||||
|
"custom_managed_image_resource_group_name": "ignore",
|
||||||
|
"custom_managed_image_name": "ignore",
|
||||||
|
"location": "ignore",
|
||||||
|
"subscription_id": "ignore",
|
||||||
|
"communicator": "none",
|
||||||
|
"managed_image_resource_group_name": "ignore",
|
||||||
|
"managed_image_name": "ignore",
|
||||||
|
|
||||||
|
// Does not matter for this test case, just pick one.
|
||||||
|
"os_type": constants.Target_Linux,
|
||||||
|
}
|
||||||
|
|
||||||
|
storage_account_types := []string{"None", "ReadOnly", "ReadWrite"}
|
||||||
|
|
||||||
|
for _, x := range storage_account_types {
|
||||||
|
config["disk_caching_type"] = x
|
||||||
|
_, _, err := newConfig(config, getPackerConfiguration())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("expected config to accept a disk_caching_type of %q", x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestConfigShouldRejectTempAndBuildResourceGroupName(t *testing.T) {
|
func TestConfigShouldRejectTempAndBuildResourceGroupName(t *testing.T) {
|
||||||
config := map[string]interface{}{
|
config := map[string]interface{}{
|
||||||
"capture_name_prefix": "ignore",
|
"capture_name_prefix": "ignore",
|
||||||
|
|
|
@ -59,9 +59,9 @@ func GetVirtualMachineDeployment(config *Config) (*resources.Deployment, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.ImageUrl != "" {
|
if config.ImageUrl != "" {
|
||||||
builder.SetImageUrl(config.ImageUrl, osType)
|
builder.SetImageUrl(config.ImageUrl, osType, config.diskCachingType)
|
||||||
} else if config.CustomManagedImageName != "" {
|
} else if config.CustomManagedImageName != "" {
|
||||||
builder.SetManagedDiskUrl(config.customManagedImageID, config.managedImageStorageAccountType)
|
builder.SetManagedDiskUrl(config.customManagedImageID, config.managedImageStorageAccountType, config.diskCachingType)
|
||||||
} else if config.ManagedImageName != "" && config.ImagePublisher != "" {
|
} else if config.ManagedImageName != "" && config.ImagePublisher != "" {
|
||||||
imageID := fmt.Sprintf("/subscriptions/%s/providers/Microsoft.Compute/locations/%s/publishers/%s/ArtifactTypes/vmimage/offers/%s/skus/%s/versions/%s",
|
imageID := fmt.Sprintf("/subscriptions/%s/providers/Microsoft.Compute/locations/%s/publishers/%s/ArtifactTypes/vmimage/offers/%s/skus/%s/versions/%s",
|
||||||
config.SubscriptionID,
|
config.SubscriptionID,
|
||||||
|
@ -71,7 +71,7 @@ func GetVirtualMachineDeployment(config *Config) (*resources.Deployment, error)
|
||||||
config.ImageSku,
|
config.ImageSku,
|
||||||
config.ImageVersion)
|
config.ImageVersion)
|
||||||
|
|
||||||
builder.SetManagedMarketplaceImage(config.Location, config.ImagePublisher, config.ImageOffer, config.ImageSku, config.ImageVersion, imageID, config.managedImageStorageAccountType)
|
builder.SetManagedMarketplaceImage(config.Location, config.ImagePublisher, config.ImageOffer, config.ImageSku, config.ImageVersion, imageID, config.managedImageStorageAccountType, config.diskCachingType)
|
||||||
} else if config.SharedGallery.Subscription != "" {
|
} else if config.SharedGallery.Subscription != "" {
|
||||||
imageID := fmt.Sprintf("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/galleries/%s/images/%s",
|
imageID := fmt.Sprintf("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/galleries/%s/images/%s",
|
||||||
config.SharedGallery.Subscription,
|
config.SharedGallery.Subscription,
|
||||||
|
@ -83,9 +83,9 @@ func GetVirtualMachineDeployment(config *Config) (*resources.Deployment, error)
|
||||||
config.SharedGallery.ImageVersion)
|
config.SharedGallery.ImageVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.SetSharedGalleryImage(config.Location, imageID)
|
builder.SetSharedGalleryImage(config.Location, imageID, config.diskCachingType)
|
||||||
} else {
|
} else {
|
||||||
builder.SetMarketPlaceImage(config.ImagePublisher, config.ImageOffer, config.ImageSku, config.ImageVersion)
|
builder.SetMarketPlaceImage(config.ImagePublisher, config.ImageOffer, config.ImageSku, config.ImageVersion, config.diskCachingType)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.OSDiskSizeGB > 0 {
|
if config.OSDiskSizeGB > 0 {
|
||||||
|
@ -93,7 +93,8 @@ func GetVirtualMachineDeployment(config *Config) (*resources.Deployment, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(config.AdditionalDiskSize) > 0 {
|
if len(config.AdditionalDiskSize) > 0 {
|
||||||
builder.SetAdditionalDisks(config.AdditionalDiskSize, config.CustomManagedImageName != "" || (config.ManagedImageName != "" && config.ImagePublisher != ""))
|
isManaged := config.CustomManagedImageName != "" || (config.ManagedImageName != "" && config.ImagePublisher != "")
|
||||||
|
builder.SetAdditionalDisks(config.AdditionalDiskSize, isManaged, config.diskCachingType)
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.customData != "" {
|
if config.customData != "" {
|
||||||
|
|
|
@ -14,7 +14,6 @@ const (
|
||||||
jsonIndent = " "
|
jsonIndent = " "
|
||||||
|
|
||||||
resourceKeyVaults = "Microsoft.KeyVault/vaults"
|
resourceKeyVaults = "Microsoft.KeyVault/vaults"
|
||||||
resourceManagedDisk = "Microsoft.Compute/images"
|
|
||||||
resourceNetworkInterfaces = "Microsoft.Network/networkInterfaces"
|
resourceNetworkInterfaces = "Microsoft.Network/networkInterfaces"
|
||||||
resourcePublicIPAddresses = "Microsoft.Network/publicIPAddresses"
|
resourcePublicIPAddresses = "Microsoft.Network/publicIPAddresses"
|
||||||
resourceVirtualMachine = "Microsoft.Compute/virtualMachines"
|
resourceVirtualMachine = "Microsoft.Compute/virtualMachines"
|
||||||
|
@ -101,7 +100,7 @@ func (s *TemplateBuilder) BuildWindows(keyVaultName, winRMCertificateUrl string)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TemplateBuilder) SetManagedDiskUrl(managedImageId string, storageAccountType compute.StorageAccountTypes) error {
|
func (s *TemplateBuilder) SetManagedDiskUrl(managedImageId string, storageAccountType compute.StorageAccountTypes, cachingType compute.CachingTypes) error {
|
||||||
resource, err := s.getResourceByType(resourceVirtualMachine)
|
resource, err := s.getResourceByType(resourceVirtualMachine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -114,6 +113,7 @@ func (s *TemplateBuilder) SetManagedDiskUrl(managedImageId string, storageAccoun
|
||||||
profile.OsDisk.OsType = s.osType
|
profile.OsDisk.OsType = s.osType
|
||||||
profile.OsDisk.CreateOption = compute.DiskCreateOptionTypesFromImage
|
profile.OsDisk.CreateOption = compute.DiskCreateOptionTypesFromImage
|
||||||
profile.OsDisk.Vhd = nil
|
profile.OsDisk.Vhd = nil
|
||||||
|
profile.OsDisk.Caching = cachingType
|
||||||
profile.OsDisk.ManagedDisk = &compute.ManagedDiskParameters{
|
profile.OsDisk.ManagedDisk = &compute.ManagedDiskParameters{
|
||||||
StorageAccountType: storageAccountType,
|
StorageAccountType: storageAccountType,
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ func (s *TemplateBuilder) SetManagedDiskUrl(managedImageId string, storageAccoun
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TemplateBuilder) SetManagedMarketplaceImage(location, publisher, offer, sku, version, imageID string, storageAccountType compute.StorageAccountTypes) error {
|
func (s *TemplateBuilder) SetManagedMarketplaceImage(location, publisher, offer, sku, version, imageID string, storageAccountType compute.StorageAccountTypes, cachingType compute.CachingTypes) error {
|
||||||
resource, err := s.getResourceByType(resourceVirtualMachine)
|
resource, err := s.getResourceByType(resourceVirtualMachine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -133,11 +133,11 @@ func (s *TemplateBuilder) SetManagedMarketplaceImage(location, publisher, offer,
|
||||||
Offer: &offer,
|
Offer: &offer,
|
||||||
Sku: &sku,
|
Sku: &sku,
|
||||||
Version: &version,
|
Version: &version,
|
||||||
//ID: &imageID,
|
|
||||||
}
|
}
|
||||||
profile.OsDisk.OsType = s.osType
|
profile.OsDisk.OsType = s.osType
|
||||||
profile.OsDisk.CreateOption = compute.DiskCreateOptionTypesFromImage
|
profile.OsDisk.CreateOption = compute.DiskCreateOptionTypesFromImage
|
||||||
profile.OsDisk.Vhd = nil
|
profile.OsDisk.Vhd = nil
|
||||||
|
profile.OsDisk.Caching = cachingType
|
||||||
profile.OsDisk.ManagedDisk = &compute.ManagedDiskParameters{
|
profile.OsDisk.ManagedDisk = &compute.ManagedDiskParameters{
|
||||||
StorageAccountType: storageAccountType,
|
StorageAccountType: storageAccountType,
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ func (s *TemplateBuilder) SetManagedMarketplaceImage(location, publisher, offer,
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TemplateBuilder) SetSharedGalleryImage(location, imageID string) error {
|
func (s *TemplateBuilder) SetSharedGalleryImage(location, imageID string, cachingType compute.CachingTypes) error {
|
||||||
resource, err := s.getResourceByType(resourceVirtualMachine)
|
resource, err := s.getResourceByType(resourceVirtualMachine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -156,17 +156,19 @@ func (s *TemplateBuilder) SetSharedGalleryImage(location, imageID string) error
|
||||||
profile.ImageReference = &compute.ImageReference{ID: &imageID}
|
profile.ImageReference = &compute.ImageReference{ID: &imageID}
|
||||||
profile.OsDisk.OsType = s.osType
|
profile.OsDisk.OsType = s.osType
|
||||||
profile.OsDisk.Vhd = nil
|
profile.OsDisk.Vhd = nil
|
||||||
|
profile.OsDisk.Caching = cachingType
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TemplateBuilder) SetMarketPlaceImage(publisher, offer, sku, version string) error {
|
func (s *TemplateBuilder) SetMarketPlaceImage(publisher, offer, sku, version string, cachingType compute.CachingTypes) error {
|
||||||
resource, err := s.getResourceByType(resourceVirtualMachine)
|
resource, err := s.getResourceByType(resourceVirtualMachine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
profile := resource.Properties.StorageProfile
|
profile := resource.Properties.StorageProfile
|
||||||
|
profile.OsDisk.Caching = cachingType
|
||||||
profile.ImageReference = &compute.ImageReference{
|
profile.ImageReference = &compute.ImageReference{
|
||||||
Publisher: to.StringPtr(publisher),
|
Publisher: to.StringPtr(publisher),
|
||||||
Offer: to.StringPtr(offer),
|
Offer: to.StringPtr(offer),
|
||||||
|
@ -177,7 +179,7 @@ func (s *TemplateBuilder) SetMarketPlaceImage(publisher, offer, sku, version str
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TemplateBuilder) SetImageUrl(imageUrl string, osType compute.OperatingSystemTypes) error {
|
func (s *TemplateBuilder) SetImageUrl(imageUrl string, osType compute.OperatingSystemTypes, cachingType compute.CachingTypes) error {
|
||||||
resource, err := s.getResourceByType(resourceVirtualMachine)
|
resource, err := s.getResourceByType(resourceVirtualMachine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -185,6 +187,8 @@ func (s *TemplateBuilder) SetImageUrl(imageUrl string, osType compute.OperatingS
|
||||||
|
|
||||||
profile := resource.Properties.StorageProfile
|
profile := resource.Properties.StorageProfile
|
||||||
profile.OsDisk.OsType = osType
|
profile.OsDisk.OsType = osType
|
||||||
|
profile.OsDisk.Caching = cachingType
|
||||||
|
|
||||||
profile.OsDisk.Image = &compute.VirtualHardDisk{
|
profile.OsDisk.Image = &compute.VirtualHardDisk{
|
||||||
URI: to.StringPtr(imageUrl),
|
URI: to.StringPtr(imageUrl),
|
||||||
}
|
}
|
||||||
|
@ -224,7 +228,7 @@ func (s *TemplateBuilder) SetOSDiskSizeGB(diskSizeGB int32) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TemplateBuilder) SetAdditionalDisks(diskSizeGB []int32, isManaged bool) error {
|
func (s *TemplateBuilder) SetAdditionalDisks(diskSizeGB []int32, isManaged bool, cachingType compute.CachingTypes) error {
|
||||||
resource, err := s.getResourceByType(resourceVirtualMachine)
|
resource, err := s.getResourceByType(resourceVirtualMachine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -233,12 +237,12 @@ func (s *TemplateBuilder) SetAdditionalDisks(diskSizeGB []int32, isManaged bool)
|
||||||
profile := resource.Properties.StorageProfile
|
profile := resource.Properties.StorageProfile
|
||||||
dataDisks := make([]DataDiskUnion, len(diskSizeGB))
|
dataDisks := make([]DataDiskUnion, len(diskSizeGB))
|
||||||
|
|
||||||
for i, additionalsize := range diskSizeGB {
|
for i, additionalSize := range diskSizeGB {
|
||||||
dataDisks[i].DiskSizeGB = to.Int32Ptr(additionalsize)
|
dataDisks[i].DiskSizeGB = to.Int32Ptr(additionalSize)
|
||||||
dataDisks[i].Lun = to.IntPtr(i)
|
dataDisks[i].Lun = to.IntPtr(i)
|
||||||
dataDisks[i].Name = to.StringPtr(fmt.Sprintf("datadisk-%d", i+1))
|
dataDisks[i].Name = to.StringPtr(fmt.Sprintf("datadisk-%d", i+1))
|
||||||
dataDisks[i].CreateOption = "Empty"
|
dataDisks[i].CreateOption = "Empty"
|
||||||
dataDisks[i].Caching = "ReadWrite"
|
dataDisks[i].Caching = cachingType
|
||||||
if isManaged {
|
if isManaged {
|
||||||
dataDisks[i].Vhd = nil
|
dataDisks[i].Vhd = nil
|
||||||
dataDisks[i].ManagedDisk = profile.OsDisk.ManagedDisk
|
dataDisks[i].ManagedDisk = profile.OsDisk.ManagedDisk
|
||||||
|
|
|
@ -139,7 +139,7 @@
|
||||||
"id": "/subscriptions/ignore/resourceGroups/ignore/providers/Microsoft.Compute/galleries/ignore/images/ignore"
|
"id": "/subscriptions/ignore/resourceGroups/ignore/providers/Microsoft.Compute/galleries/ignore/images/ignore"
|
||||||
},
|
},
|
||||||
"osDisk": {
|
"osDisk": {
|
||||||
"caching": "ReadWrite",
|
"caching": "ReadOnly",
|
||||||
"createOption": "FromImage",
|
"createOption": "FromImage",
|
||||||
"name": "[parameters('osDiskName')]",
|
"name": "[parameters('osDiskName')]",
|
||||||
"osType": "Linux"
|
"osType": "Linux"
|
||||||
|
|
|
@ -20,7 +20,7 @@ func TestBuildLinux00(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = testSubject.SetMarketPlaceImage("Canonical", "UbuntuServer", "16.04", "latest")
|
err = testSubject.SetMarketPlaceImage("Canonical", "UbuntuServer", "16.04", "latest", compute.CachingTypesReadWrite)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ func TestBuildLinux01(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = testSubject.SetImageUrl("http://azure/custom.vhd", compute.Linux)
|
err = testSubject.SetImageUrl("http://azure/custom.vhd", compute.Linux, compute.CachingTypesReadWrite)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ func TestBuildLinux02(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
testSubject.BuildLinux("--test-ssh-authorized-key--")
|
testSubject.BuildLinux("--test-ssh-authorized-key--")
|
||||||
testSubject.SetImageUrl("http://azure/custom.vhd", compute.Linux)
|
testSubject.SetImageUrl("http://azure/custom.vhd", compute.Linux, compute.CachingTypesReadWrite)
|
||||||
testSubject.SetOSDiskSizeGB(100)
|
testSubject.SetOSDiskSizeGB(100)
|
||||||
|
|
||||||
err = testSubject.SetVirtualNetwork("--virtual-network-resource-group--", "--virtual-network--", "--subnet-name--")
|
err = testSubject.SetVirtualNetwork("--virtual-network-resource-group--", "--virtual-network--", "--subnet-name--")
|
||||||
|
@ -105,7 +105,7 @@ func TestBuildWindows00(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = testSubject.SetMarketPlaceImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter", "latest")
|
err = testSubject.SetMarketPlaceImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter", "latest", compute.CachingTypesReadWrite)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -133,12 +133,12 @@ func TestBuildWindows01(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = testSubject.SetManagedMarketplaceImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter", "latest", "2015-1", "1", "Premium_LRS")
|
err = testSubject.SetManagedMarketplaceImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter", "latest", "2015-1", "1", "Premium_LRS", compute.CachingTypesReadWrite)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = testSubject.SetAdditionalDisks([]int32{32, 64}, true)
|
err = testSubject.SetAdditionalDisks([]int32{32, 64}, true, compute.CachingTypesReadWrite)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@ func TestBuildWindows02(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = testSubject.SetAdditionalDisks([]int32{32, 64}, false)
|
err = testSubject.SetAdditionalDisks([]int32{32, 64}, false, compute.CachingTypesReadWrite)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ func TestSharedImageGallery00(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
imageID := "/subscriptions/ignore/resourceGroups/ignore/providers/Microsoft.Compute/galleries/ignore/images/ignore"
|
imageID := "/subscriptions/ignore/resourceGroups/ignore/providers/Microsoft.Compute/galleries/ignore/images/ignore"
|
||||||
err = testSubject.SetSharedGalleryImage("westcentralus", imageID)
|
err = testSubject.SetSharedGalleryImage("westcentralus", imageID, compute.CachingTypesReadOnly)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -190,6 +190,9 @@ Providing `temp_resource_group_name` or `location` in combination with
|
||||||
- `os_disk_size_gb` (number) Specify the size of the OS disk in GB
|
- `os_disk_size_gb` (number) Specify the size of the OS disk in GB
|
||||||
(gigabytes). Values of zero or less than zero are ignored.
|
(gigabytes). Values of zero or less than zero are ignored.
|
||||||
|
|
||||||
|
- `disk_caching_type` (string) Specify the disk caching type. Valid values are None, ReadOnly,
|
||||||
|
and ReadWrite. The default value is ReadWrite.
|
||||||
|
|
||||||
- `disk_additional_size` (array of integers) - The size(s) of any additional
|
- `disk_additional_size` (array of integers) - The size(s) of any additional
|
||||||
hard disks for the VM in gigabytes. If this is not specified then the VM
|
hard disks for the VM in gigabytes. If this is not specified then the VM
|
||||||
will only contain an OS disk. The number of additional disks and maximum
|
will only contain an OS disk. The number of additional disks and maximum
|
||||||
|
|
Loading…
Reference in New Issue