Skip to content

Commit

Permalink
Merge pull request #246 from jake2184/vm_lease_domain
Browse files Browse the repository at this point in the history
Add lease_domain to VMs, which sets the HA lease domain
  • Loading branch information
emesika authored Feb 16, 2021
2 parents 8be248c + cf24aee commit 287ea4f
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions ovirt/resource_ovirt_vm.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ func resourceOvirtVM() *schema.Resource {
Optional: true,
Default: false,
},
"lease_domain": {
Type: schema.TypeString,
Optional: true,
},
"memory": {
Type: schema.TypeInt,
Optional: true,
Expand Down Expand Up @@ -412,6 +416,26 @@ func resourceOvirtVMCreate(d *schema.ResourceData, meta interface{}) error {
return err
}
vmBuilder.HighAvailability(highAvailability)

if leaseDomain, ok := d.GetOkExists("lease_domain"); ok {
sdsService := conn.SystemService().StorageDomainsService()
sdsResp, err := sdsService.List().Search("name=" + leaseDomain.(string)).Send()
if err != nil {
return fmt.Errorf("failed to search storage domains, reason: %v", err)
}
storageDomains := sdsResp.MustStorageDomains()
if len(storageDomains.Slice()) == 0 {
return fmt.Errorf("failed to find storage domain with name=%s", leaseDomain.(string))
}
sd := storageDomains.Slice()[0]

lease, err := ovirtsdk4.NewStorageDomainLeaseBuilder().StorageDomain(sd).Build()
if err != nil {
return err
}

vmBuilder.Lease(lease)
}
}

cpuTopo := ovirtsdk4.NewCpuTopologyBuilder().
Expand Down Expand Up @@ -722,6 +746,26 @@ func resourceOvirtVMUpdate(d *schema.ResourceData, meta interface{}) error {
return err
}
vmBuilder.HighAvailability(highAvailability)

if leaseDomain, ok := d.GetOkExists("lease_domain"); ok {
sdsService := conn.SystemService().StorageDomainsService()
sdsResp, err := sdsService.List().Search("name=" + leaseDomain.(string)).Send()
if err != nil {
return fmt.Errorf("failed to search storage domains, reason: %v", err)
}
storageDomains := sdsResp.MustStorageDomains()
if len(storageDomains.Slice()) == 0 {
return fmt.Errorf("failed to find storage domain with name=%s", leaseDomain.(string))
}
sd := storageDomains.Slice()[0]

lease, err := ovirtsdk4.NewStorageDomainLeaseBuilder().StorageDomain(sd).Build()
if err != nil {
return err
}

vmBuilder.Lease(lease)
}
}

cpuTopo := ovirtsdk4.NewCpuTopologyBuilder().
Expand Down

0 comments on commit 287ea4f

Please sign in to comment.