From a105de19c0db8cba375141f691248999d47b6304 Mon Sep 17 00:00:00 2001 From: Antoine Rouaze Date: Mon, 9 May 2016 19:51:19 +0200 Subject: [PATCH] [azurerm] Add os_type and image_uri in azurerm_virtual_machine (#6553) Fix #6372 Partial fix of #6526 --- .../azurerm/resource_arm_virtual_machine.go | 27 +++++++++++++++++++ .../azurerm/r/virtual_machine.html.markdown | 2 ++ 2 files changed, 29 insertions(+) diff --git a/builtin/providers/azurerm/resource_arm_virtual_machine.go b/builtin/providers/azurerm/resource_arm_virtual_machine.go index 5126062d7..0c3f95e67 100644 --- a/builtin/providers/azurerm/resource_arm_virtual_machine.go +++ b/builtin/providers/azurerm/resource_arm_virtual_machine.go @@ -118,6 +118,11 @@ func resourceArmVirtualMachine() *schema.Resource { Required: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ + "os_type": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + }, + "name": &schema.Schema{ Type: schema.TypeString, Required: true, @@ -128,6 +133,11 @@ func resourceArmVirtualMachine() *schema.Resource { Required: true, }, + "image_uri": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + }, + "caching": &schema.Schema{ Type: schema.TypeString, Optional: true, @@ -1082,6 +1092,7 @@ func expandAzureRmVirtualMachineOsDisk(d *schema.ResourceData) (*compute.OSDisk, name := disk["name"].(string) vhdURI := disk["vhd_uri"].(string) + imageURI := disk["image_uri"].(string) createOption := disk["create_option"].(string) osDisk := &compute.OSDisk{ @@ -1092,6 +1103,22 @@ func expandAzureRmVirtualMachineOsDisk(d *schema.ResourceData) (*compute.OSDisk, CreateOption: compute.DiskCreateOptionTypes(createOption), } + if v := disk["image_uri"].(string); v != "" { + osDisk.Image = &compute.VirtualHardDisk{ + URI: &imageURI, + } + } + + if v := disk["os_type"].(string); v != "" { + if v == "linux" { + osDisk.OsType = compute.Linux + } else if v == "windows" { + osDisk.OsType = compute.Windows + } else { + return nil, fmt.Errorf("[ERROR] os_type must be 'linux' or 'windows'") + } + } + if v := disk["caching"].(string); v != "" { osDisk.Caching = compute.CachingTypes(v) } diff --git a/website/source/docs/providers/azurerm/r/virtual_machine.html.markdown b/website/source/docs/providers/azurerm/r/virtual_machine.html.markdown index 700aa4da0..fdfa3c3c0 100644 --- a/website/source/docs/providers/azurerm/r/virtual_machine.html.markdown +++ b/website/source/docs/providers/azurerm/r/virtual_machine.html.markdown @@ -142,6 +142,8 @@ For more information on the different example configurations, please check out t * `vhd_uri` - (Required) Specifies the vhd uri. * `create_option` - (Required) Specifies how the virtual machine should be created. Possible values are `attach` and `FromImage`. * `caching` - (Optional) Specifies the caching requirements. +* `image_uri` - (Optional) Specifies the image_uri in the form publisherName:offer:skus:version. +* `os_type` - (Optional) Specifies the operating system Type, valid values are windows, linux. `storage_data_disk` supports the following: