Skip to content

Commit

Permalink
feat: add instance_uuid to d/virtual_machine (#2198)
Browse files Browse the repository at this point in the history
- Adds field `instance_uuid` `d/virtual_machine`.
- Removes duplicate `firmware` declarations in tests.

Co-authored-by: Jeremie Patigny <[email protected]>
  • Loading branch information
jpatigny and Jeremie Patigny committed May 28, 2024
1 parent 89c78cb commit bc22925
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 6 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ BUG FIX:
function to go through the 64bit case.
([#2200](https://github.com/terraform-providers/terraform-provider-vsphere/pull/2200))

FEATURES:

* `data/virtual_machine`: Adds support for `instance_uuid`.
([#2198](https://github.com/terraform-providers/terraform-provider-vsphere/pull/2198))

## 2.8.1 (May 08, 2024)

BUG FIX:
Expand Down
8 changes: 7 additions & 1 deletion vsphere/data_source_vsphere_virtual_machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ package vsphere

import (
"fmt"
"github.com/hashicorp/terraform-provider-vsphere/vsphere/internal/helper/folder"
"log"
"path"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/hashicorp/terraform-provider-vsphere/vsphere/internal/helper/folder"
"github.com/hashicorp/terraform-provider-vsphere/vsphere/internal/helper/structure"
"github.com/hashicorp/terraform-provider-vsphere/vsphere/internal/helper/virtualmachine"
"github.com/hashicorp/terraform-provider-vsphere/vsphere/internal/virtualdevice"
Expand Down Expand Up @@ -160,6 +160,11 @@ func dataSourceVSphereVirtualMachine() *schema.Resource {
Computed: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"instance_uuid": {
Type: schema.TypeString,
Computed: true,
Description: "Instance UUID of this virtual machine.",
},
}

// Merge the VirtualMachineConfig structure so that we can include the number of
Expand Down Expand Up @@ -251,6 +256,7 @@ func dataSourceVSphereVirtualMachineRead(d *schema.ResourceData, meta interface{
_ = d.Set("scsi_type", virtualdevice.ReadSCSIBusType(object.VirtualDeviceList(props.Config.Hardware.Device), d.Get("scsi_controller_scan_count").(int)))
_ = d.Set("scsi_bus_sharing", virtualdevice.ReadSCSIBusSharing(object.VirtualDeviceList(props.Config.Hardware.Device), d.Get("scsi_controller_scan_count").(int)))
_ = d.Set("firmware", props.Config.Firmware)
_ = d.Set("instance_uuid", props.Config.InstanceUuid)
disks, err := virtualdevice.ReadDiskAttrsForDataSource(object.VirtualDeviceList(props.Config.Hardware.Device), d)
if err != nil {
return fmt.Errorf("error reading disk sizes: %s", err)
Expand Down
10 changes: 5 additions & 5 deletions vsphere/data_source_vsphere_virtual_machine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func TestAccDataSourceVSphereVirtualMachine_basic(t *testing.T) {
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "network_interfaces.0.bandwidth_share_count"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "network_interfaces.0.mac_address"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "network_interfaces.0.network_id"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "firmware"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "instance_uuid"),
),
},
},
Expand Down Expand Up @@ -98,7 +98,7 @@ func TestAccDataSourceVSphereVirtualMachine_noDatacenterAndAbsolutePath(t *testi
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "network_interfaces.0.bandwidth_share_count"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "network_interfaces.0.mac_address"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "network_interfaces.0.network_id"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "firmware"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.template", "instance_uuid"),
),
},
},
Expand Down Expand Up @@ -143,8 +143,8 @@ func TestAccDataSourceVSphereVirtualMachine_uuid(t *testing.T) {
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.uuid", "network_interfaces.0.bandwidth_share_count"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.uuid", "network_interfaces.0.mac_address"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.uuid", "network_interfaces.0.network_id"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.uuid", "firmware"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.uuid", "uuid"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.uuid", "instance_uuid"),
),
},
},
Expand Down Expand Up @@ -189,7 +189,7 @@ func TestAccDataSourceVSphereVirtualMachine_moid(t *testing.T) {
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.moid", "network_interfaces.0.bandwidth_share_count"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.moid", "network_interfaces.0.mac_address"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.moid", "network_interfaces.0.network_id"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.moid", "firmware"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.moid", "instance_uuid"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.moid", "moid"),
),
},
Expand Down Expand Up @@ -234,7 +234,7 @@ func TestAccDataSourceVSphereVirtualMachine_nameAndFolder(t *testing.T) {
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.vm1", "network_interfaces.0.bandwidth_share_count"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.vm1", "network_interfaces.0.mac_address"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.vm1", "network_interfaces.0.network_id"),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.vm1", "firmware")),
resource.TestCheckResourceAttrSet("data.vsphere_virtual_machine.vm1", "instance_uuid")),
}},
})
}
Expand Down
1 change: 1 addition & 0 deletions website/docs/d/virtual_machine.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ The following attributes are exported:
VMware Tools is not running on the virtual machine, or if the VM is powered
off, this value will be blank.
* `guest_ip_addresses` - A list of IP addresses as reported by VMware Tools.
* `instance_uuid` - The instance UUID of the virtual machine or template.

~> **NOTE:** Keep in mind when using the results of `scsi_type` and
`network_interface_types`, that the `vsphere_virtual_machine` resource only
Expand Down

0 comments on commit bc22925

Please sign in to comment.