diff --git a/affinitygroup.go b/affinitygroup.go index 6cd5220..4f40b13 100644 --- a/affinitygroup.go +++ b/affinitygroup.go @@ -26,8 +26,8 @@ type AffinityGroupClient interface { // RemoveAffinityGroup removes the affinity group specified. RemoveAffinityGroup(clusterID ClusterID, id AffinityGroupID, retries ...RetryStrategy) error - AddVMToAffinityGroup(clusterID ClusterID, vmID string, agID AffinityGroupID, retries ...RetryStrategy) error - RemoveVMFromAffinityGroup(clusterID ClusterID, vmID string, agID AffinityGroupID, retries ...RetryStrategy) error + AddVMToAffinityGroup(clusterID ClusterID, vmID VMID, agID AffinityGroupID, retries ...RetryStrategy) error + RemoveVMFromAffinityGroup(clusterID ClusterID, vmID VMID, agID AffinityGroupID, retries ...RetryStrategy) error } // CreateAffinityGroupOptionalParams is a list of optional parameters that can be passed for affinity group creation. @@ -109,7 +109,7 @@ type AffinityGroupData interface { // VMsRule contains the rule for the virtual machines. VMsRule() AffinityVMsRule // VMIDs returns the list of current virtual machine IDs assigned to this affinity group. - VMIDs() []string + VMIDs() []VMID } // AffinityGroup labels virtual machines, so they run / don't run on the same host. @@ -122,9 +122,9 @@ type AffinityGroup interface { Remove(retries ...RetryStrategy) error // AddVM adds the specified VM to the current affinity group. - AddVM(id string, retries ...RetryStrategy) error + AddVM(id VMID, retries ...RetryStrategy) error // RemoveVM removes the specified VM from the current affinity group. - RemoveVM(id string, retries ...RetryStrategy) error + RemoveVM(id VMID, retries ...RetryStrategy) error } // AffinityRule is a rule for either hosts or virtual machines. @@ -172,10 +172,10 @@ type affinityGroup struct { hostsRule AffinityRule vmsRule AffinityRule - vmids []string + vmids []VMID } -func (a affinityGroup) hasVM(id string) bool { +func (a affinityGroup) hasVM(id VMID) bool { for _, vmid := range a.vmids { if vmid == id { return true @@ -184,11 +184,11 @@ func (a affinityGroup) hasVM(id string) bool { return false } -func (a affinityGroup) AddVM(id string, retries ...RetryStrategy) error { +func (a affinityGroup) AddVM(id VMID, retries ...RetryStrategy) error { return a.client.AddVMToAffinityGroup(a.clusterID, id, a.id, retries...) } -func (a affinityGroup) RemoveVM(id string, retries ...RetryStrategy) error { +func (a affinityGroup) RemoveVM(id VMID, retries ...RetryStrategy) error { return a.client.RemoveVMFromAffinityGroup(a.clusterID, id, a.id, retries...) } @@ -228,7 +228,7 @@ func (a affinityGroup) Enforcing() bool { return a.enforcing } -func (a affinityGroup) VMIDs() []string { +func (a affinityGroup) VMIDs() []VMID { return a.vmids } @@ -308,13 +308,13 @@ func convertSDKAffinityGroupVMsList(sdkObject *ovirtsdk.AffinityGroup, result *a if !ok { return newFieldNotFound("affinity group", "VMs list") } - convertedVMIDs := make([]string, len(vmsList.Slice())) + convertedVMIDs := make([]VMID, len(vmsList.Slice())) for i, vm := range vmsList.Slice() { vmid, ok := vm.Id() if !ok { return newFieldNotFound("VM on affinity group", "id") } - convertedVMIDs[i] = vmid + convertedVMIDs[i] = VMID(vmid) } result.vmids = convertedVMIDs return nil diff --git a/affinitygroup_vm_add.go b/affinitygroup_vm_add.go index e61219a..ea86587 100644 --- a/affinitygroup_vm_add.go +++ b/affinitygroup_vm_add.go @@ -9,12 +9,12 @@ import ( func (o *oVirtClient) AddVMToAffinityGroup( clusterID ClusterID, - vmID string, + vmID VMID, agID AffinityGroupID, retries ...RetryStrategy, ) error { retries = defaultRetries(retries, defaultWriteTimeouts(o)) - vm, err := ovirtsdk4.NewVmBuilder().Id(vmID).Build() + vm, err := ovirtsdk4.NewVmBuilder().Id(string(vmID)).Build() if err != nil { return wrap(err, EBug, "Failed to build SDK VM object") } @@ -44,7 +44,7 @@ func (o *oVirtClient) AddVMToAffinityGroup( func (m *mockClient) AddVMToAffinityGroup( clusterID ClusterID, - vmID string, + vmID VMID, agID AffinityGroupID, _ ...RetryStrategy, ) error { diff --git a/affinitygroup_vm_remove.go b/affinitygroup_vm_remove.go index f2e64ab..595875e 100644 --- a/affinitygroup_vm_remove.go +++ b/affinitygroup_vm_remove.go @@ -6,7 +6,7 @@ import ( func (o *oVirtClient) RemoveVMFromAffinityGroup( clusterID ClusterID, - vmID string, + vmID VMID, agID AffinityGroupID, retries ...RetryStrategy, ) error { @@ -23,7 +23,7 @@ func (o *oVirtClient) RemoveVMFromAffinityGroup( AffinityGroupsService(). GroupService(string(agID)). VmsService(). - VmService(vmID). + VmService(string(vmID)). Remove(). Send() return err @@ -33,7 +33,7 @@ func (o *oVirtClient) RemoveVMFromAffinityGroup( func (m *mockClient) RemoveVMFromAffinityGroup( clusterID ClusterID, - vmID string, + vmID VMID, agID AffinityGroupID, _ ...RetryStrategy, ) error { diff --git a/disk.go b/disk.go index 6e8264b..d262c23 100644 --- a/disk.go +++ b/disk.go @@ -503,7 +503,7 @@ type Disk interface { // AttachToVM attaches a disk to this VM. AttachToVM( - vmID string, + vmID VMID, diskInterface DiskInterface, params CreateDiskAttachmentOptionalParams, retries ...RetryStrategy, @@ -738,7 +738,7 @@ func (d *disk) Sparse() bool { } func (d *disk) AttachToVM( - vmID string, + vmID VMID, diskInterface DiskInterface, params CreateDiskAttachmentOptionalParams, retries ...RetryStrategy, diff --git a/disk_attachment.go b/disk_attachment.go index 6f9bbee..9871960 100644 --- a/disk_attachment.go +++ b/disk_attachment.go @@ -9,13 +9,19 @@ import ( // DiskAttachmentClient contains the methods required for handling disk attachments. type DiskAttachmentClient interface { // CreateDiskAttachment attaches a disk to a VM. - CreateDiskAttachment(vmID string, diskID string, diskInterface DiskInterface, params CreateDiskAttachmentOptionalParams, retries ...RetryStrategy) (DiskAttachment, error) + CreateDiskAttachment( + vmID VMID, + diskID string, + diskInterface DiskInterface, + params CreateDiskAttachmentOptionalParams, + retries ...RetryStrategy, + ) (DiskAttachment, error) // GetDiskAttachment returns a single disk attachment in a virtual machine. - GetDiskAttachment(vmID string, id string, retries ...RetryStrategy) (DiskAttachment, error) + GetDiskAttachment(vmID VMID, id string, retries ...RetryStrategy) (DiskAttachment, error) // ListDiskAttachments lists all disk attachments for a virtual machine. - ListDiskAttachments(vmID string, retries ...RetryStrategy) ([]DiskAttachment, error) + ListDiskAttachments(vmID VMID, retries ...RetryStrategy) ([]DiskAttachment, error) // RemoveDiskAttachment removes the disk attachment in question. - RemoveDiskAttachment(vmID string, diskAttachmentID string, retries ...RetryStrategy) error + RemoveDiskAttachment(vmID VMID, diskAttachmentID string, retries ...RetryStrategy) error } // DiskInterface describes the means by which a disk will appear to the VM. @@ -148,7 +154,7 @@ type DiskAttachment interface { // ID returns the identifier of the attachment. ID() string // VMID returns the ID of the virtual machine this attachment belongs to. - VMID() string + VMID() VMID // DiskID returns the ID of the disk in this attachment. DiskID() string // DiskInterface describes the means by which a disk will appear to the VM. @@ -171,7 +177,7 @@ type diskAttachment struct { client Client id string - vmid string + vmid VMID diskID string diskInterface DiskInterface active bool @@ -190,7 +196,7 @@ func (d *diskAttachment) ID() string { return d.id } -func (d *diskAttachment) VMID() string { +func (d *diskAttachment) VMID() VMID { return d.vmid } @@ -251,7 +257,7 @@ func convertSDKDiskAttachment(object *ovirtsdk4.DiskAttachment, o *oVirtClient) client: o, id: id, - vmid: vmID, + vmid: VMID(vmID), diskID: diskID, diskInterface: DiskInterface(diskInterface), bootable: bootable, diff --git a/disk_attachment_create.go b/disk_attachment_create.go index 6301650..3ba5921 100644 --- a/disk_attachment_create.go +++ b/disk_attachment_create.go @@ -7,7 +7,7 @@ import ( ) func (o *oVirtClient) CreateDiskAttachment( - vmID string, + vmID VMID, diskID string, diskInterface DiskInterface, params CreateDiskAttachmentOptionalParams, @@ -25,7 +25,7 @@ func (o *oVirtClient) CreateDiskAttachment( attachmentBuilder := ovirtsdk.NewDiskAttachmentBuilder() attachmentBuilder.Disk(ovirtsdk.NewDiskBuilder().Id(diskID).MustBuild()) attachmentBuilder.Interface(ovirtsdk.DiskInterface(diskInterface)) - attachmentBuilder.Vm(ovirtsdk.NewVmBuilder().Id(vmID).MustBuild()) + attachmentBuilder.Vm(ovirtsdk.NewVmBuilder().Id(string(vmID)).MustBuild()) attachmentBuilder.Active(true) if params != nil { if active := params.Active(); active != nil { @@ -37,7 +37,7 @@ func (o *oVirtClient) CreateDiskAttachment( } attachment := attachmentBuilder.MustBuild() - addRequest := o.conn.SystemService().VmsService().VmService(vmID).DiskAttachmentsService().Add() + addRequest := o.conn.SystemService().VmsService().VmService(string(vmID)).DiskAttachmentsService().Add() addRequest.Attachment(attachment) response, err := addRequest.Send() if err != nil { @@ -66,7 +66,7 @@ func (o *oVirtClient) CreateDiskAttachment( } func (m *mockClient) CreateDiskAttachment( - vmID string, + vmID VMID, diskID string, diskInterface DiskInterface, params CreateDiskAttachmentOptionalParams, diff --git a/disk_attachment_get.go b/disk_attachment_get.go index ae850da..8957d88 100644 --- a/disk_attachment_get.go +++ b/disk_attachment_get.go @@ -5,7 +5,7 @@ import ( ) func (o *oVirtClient) GetDiskAttachment( - vmid string, + vmid VMID, id string, retries ...RetryStrategy, ) (result DiskAttachment, err error) { @@ -18,7 +18,7 @@ func (o *oVirtClient) GetDiskAttachment( response, err := o.conn. SystemService(). VmsService(). - VmService(vmid). + VmService(string(vmid)). DiskAttachmentsService(). AttachmentService(id). Get(). @@ -44,7 +44,7 @@ func (o *oVirtClient) GetDiskAttachment( return result, err } -func (m *mockClient) GetDiskAttachment(vmID string, diskAttachmentID string, _ ...RetryStrategy) (DiskAttachment, error) { +func (m *mockClient) GetDiskAttachment(vmID VMID, diskAttachmentID string, _ ...RetryStrategy) (DiskAttachment, error) { m.lock.Lock() defer m.lock.Unlock() diff --git a/disk_attachment_list.go b/disk_attachment_list.go index e0c3322..f6f5d0b 100644 --- a/disk_attachment_list.go +++ b/disk_attachment_list.go @@ -5,7 +5,7 @@ import ( ) func (o *oVirtClient) ListDiskAttachments( - vmid string, + vmid VMID, retries ...RetryStrategy, ) (result []DiskAttachment, err error) { retries = defaultRetries(retries, defaultReadTimeouts(o)) @@ -15,7 +15,7 @@ func (o *oVirtClient) ListDiskAttachments( o.logger, retries, func() error { - response, e := o.conn.SystemService().VmsService().VmService(vmid).DiskAttachmentsService().List().Send() + response, e := o.conn.SystemService().VmsService().VmService(string(vmid)).DiskAttachmentsService().List().Send() if e != nil { return e } @@ -35,7 +35,7 @@ func (o *oVirtClient) ListDiskAttachments( return } -func (m *mockClient) ListDiskAttachments(vmID string, _ ...RetryStrategy) ([]DiskAttachment, error) { +func (m *mockClient) ListDiskAttachments(vmID VMID, _ ...RetryStrategy) ([]DiskAttachment, error) { m.lock.Lock() defer m.lock.Unlock() diff --git a/disk_attachment_remove.go b/disk_attachment_remove.go index a8073f3..3707014 100644 --- a/disk_attachment_remove.go +++ b/disk_attachment_remove.go @@ -4,7 +4,7 @@ import ( "fmt" ) -func (o *oVirtClient) RemoveDiskAttachment(vmID string, diskAttachmentID string, retries ...RetryStrategy) error { +func (o *oVirtClient) RemoveDiskAttachment(vmID VMID, diskAttachmentID string, retries ...RetryStrategy) error { retries = defaultRetries(retries, defaultWriteTimeouts(o)) return retry( fmt.Sprintf("removing disk attachment %s on VM %s", diskAttachmentID, vmID), @@ -14,7 +14,7 @@ func (o *oVirtClient) RemoveDiskAttachment(vmID string, diskAttachmentID string, _, err := o.conn. SystemService(). VmsService(). - VmService(vmID). + VmService(string(vmID)). DiskAttachmentsService(). AttachmentService(diskAttachmentID). Remove(). @@ -24,7 +24,7 @@ func (o *oVirtClient) RemoveDiskAttachment(vmID string, diskAttachmentID string, ) } -func (m *mockClient) RemoveDiskAttachment(vmID string, diskAttachmentID string, _ ...RetryStrategy) error { +func (m *mockClient) RemoveDiskAttachment(vmID VMID, diskAttachmentID string, _ ...RetryStrategy) error { m.lock.Lock() defer m.lock.Unlock() diff --git a/mock.go b/mock.go index 0be8ab8..7e15dae 100644 --- a/mock.go +++ b/mock.go @@ -24,7 +24,7 @@ type mockClient struct { url string lock *sync.Mutex nonSecureRandom *rand.Rand - vms map[string]*vm + vms map[VMID]*vm storageDomains map[string]*storageDomain disks map[string]*diskWithData clusters map[ClusterID]*cluster @@ -34,13 +34,13 @@ type mockClient struct { vnicProfiles map[string]*vnicProfile networks map[string]*network dataCenters map[string]*datacenterWithClusters - vmDiskAttachmentsByVM map[string]map[string]*diskAttachment + vmDiskAttachmentsByVM map[VMID]map[string]*diskAttachment vmDiskAttachmentsByDisk map[string]*diskAttachment templateDiskAttachmentsByTemplate map[TemplateID][]*templateDiskAttachment templateDiskAttachmentsByDisk map[string]*templateDiskAttachment tags map[string]*tag affinityGroups map[ClusterID]map[AffinityGroupID]*affinityGroup - vmIPs map[string]map[string][]net.IP + vmIPs map[VMID]map[string][]net.IP instanceTypes map[InstanceTypeID]*instanceType } diff --git a/newmock.go b/newmock.go index d987f49..27b2f49 100644 --- a/newmock.go +++ b/newmock.go @@ -81,7 +81,7 @@ func getClient( logger: logger, url: "https://localhost/ovirt-engine/api", lock: &sync.Mutex{}, - vms: map[string]*vm{}, + vms: map[VMID]*vm{}, tags: map[string]*tag{}, nonSecureRandom: rand.New(rand.NewSource(time.Now().UnixNano())), //nolint:gosec storageDomains: map[string]*storageDomain{ @@ -108,7 +108,7 @@ func getClient( dataCenters: map[string]*datacenterWithClusters{ testDatacenter.ID(): testDatacenter, }, - vmDiskAttachmentsByVM: map[string]map[string]*diskAttachment{}, + vmDiskAttachmentsByVM: map[VMID]map[string]*diskAttachment{}, vmDiskAttachmentsByDisk: map[string]*diskAttachment{}, templateDiskAttachmentsByTemplate: map[TemplateID][]*templateDiskAttachment{ blankTemplate.ID(): {}, @@ -117,7 +117,7 @@ func getClient( affinityGroups: map[ClusterID]map[AffinityGroupID]*affinityGroup{ testCluster.ID(): {}, }, - vmIPs: map[string]map[string][]net.IP{}, + vmIPs: map[VMID]map[string][]net.IP{}, instanceTypes: nil, } client.instanceTypes = getInstanceTypes(client) diff --git a/nic.go b/nic.go index aac9fff..485fddf 100644 --- a/nic.go +++ b/nic.go @@ -8,7 +8,7 @@ import ( type NICClient interface { // CreateNIC adds a new NIC to a VM specified in vmid. CreateNIC( - vmid string, + vmid VMID, vnicProfileID string, name string, optional OptionalNICParameters, @@ -16,17 +16,17 @@ type NICClient interface { ) (NIC, error) // UpdateNIC allows updating the NIC. UpdateNIC( - vmid string, + vmid VMID, nicID string, params UpdateNICParameters, retries ...RetryStrategy, ) (NIC, error) // GetNIC returns one specific NIC with the ID specified in id, attached to a VM with the ID specified in vmid. - GetNIC(vmid string, id string, retries ...RetryStrategy) (NIC, error) + GetNIC(vmid VMID, id string, retries ...RetryStrategy) (NIC, error) // ListNICs lists all NICs attached to the VM specified in vmid. - ListNICs(vmid string, retries ...RetryStrategy) ([]NIC, error) + ListNICs(vmid VMID, retries ...RetryStrategy) ([]NIC, error) // RemoveNIC removes the network interface specified. - RemoveNIC(vmid string, id string, retries ...RetryStrategy) error + RemoveNIC(vmid VMID, id string, retries ...RetryStrategy) error } // OptionalNICParameters is an interface that declares the source of optional parameters for NIC creation. @@ -121,7 +121,7 @@ type NICData interface { // Name is the user-given name of the network interface. Name() string // VMID is the identified of the VM this NIC is attached to. May be nil if the NIC is not attached. - VMID() string + VMID() VMID // VNICProfileID returns the ID of the VNIC profile in use by the NIC. VNICProfileID() string } @@ -171,7 +171,7 @@ func convertSDKNIC(sdkObject *ovirtsdk.Nic, cli Client) (NIC, error) { cli, id, name, - vmid, + VMID(vmid), vnicProfileID, }, nil } @@ -181,7 +181,7 @@ type nic struct { id string name string - vmid string + vmid VMID vnicProfileID string } @@ -209,7 +209,7 @@ func (n nic) Name() string { return n.name } -func (n nic) VMID() string { +func (n nic) VMID() VMID { return n.vmid } diff --git a/nic_create.go b/nic_create.go index 4db0120..2f4c7df 100644 --- a/nic_create.go +++ b/nic_create.go @@ -8,7 +8,7 @@ import ( ) func (o *oVirtClient) CreateNIC( - vmid string, + vmid VMID, vnicProfileID string, name string, _ OptionalNICParameters, @@ -29,7 +29,7 @@ func (o *oVirtClient) CreateNIC( nicBuilder.VnicProfile(ovirtsdk.NewVnicProfileBuilder().Id(vnicProfileID).MustBuild()) nic := nicBuilder.MustBuild() - response, err := o.conn.SystemService().VmsService().VmService(vmid).NicsService().Add().Nic(nic).Send() + response, err := o.conn.SystemService().VmsService().VmService(string(vmid)).NicsService().Add().Nic(nic).Send() if err != nil { return err } @@ -57,7 +57,7 @@ func (o *oVirtClient) CreateNIC( } func (m *mockClient) CreateNIC( - vmid string, + vmid VMID, vnicProfileID string, name string, _ OptionalNICParameters, @@ -92,7 +92,7 @@ func (m *mockClient) CreateNIC( return nic, nil } -func validateNICCreationParameters(vmid string, name string) error { +func validateNICCreationParameters(vmid VMID, name string) error { if vmid == "" { return newError(EBadArgument, "VM ID cannot be empty") } diff --git a/nic_get.go b/nic_get.go index 1b5a80b..6158e53 100644 --- a/nic_get.go +++ b/nic_get.go @@ -4,14 +4,14 @@ import ( "fmt" ) -func (o *oVirtClient) GetNIC(vmid string, id string, retries ...RetryStrategy) (result NIC, err error) { +func (o *oVirtClient) GetNIC(vmid VMID, id string, retries ...RetryStrategy) (result NIC, err error) { retries = defaultRetries(retries, defaultReadTimeouts(o)) err = retry( fmt.Sprintf("getting NIC %s for VM %s", id, vmid), o.logger, retries, func() error { - response, err := o.conn.SystemService().VmsService().VmService(vmid).NicsService().NicService(id).Get().Send() + response, err := o.conn.SystemService().VmsService().VmService(string(vmid)).NicsService().NicService(id).Get().Send() if err != nil { return err } @@ -40,7 +40,7 @@ func (o *oVirtClient) GetNIC(vmid string, id string, retries ...RetryStrategy) ( return result, err } -func (m *mockClient) GetNIC(vmid string, id string, _ ...RetryStrategy) (NIC, error) { +func (m *mockClient) GetNIC(vmid VMID, id string, _ ...RetryStrategy) (NIC, error) { m.lock.Lock() defer m.lock.Unlock() if nic, ok := m.nics[id]; ok { diff --git a/nic_list.go b/nic_list.go index 0f91adc..6708bc6 100644 --- a/nic_list.go +++ b/nic_list.go @@ -4,14 +4,14 @@ import ( "fmt" ) -func (o *oVirtClient) ListNICs(vmid string, retries ...RetryStrategy) (result []NIC, err error) { +func (o *oVirtClient) ListNICs(vmid VMID, retries ...RetryStrategy) (result []NIC, err error) { retries = defaultRetries(retries, defaultReadTimeouts(o)) err = retry( fmt.Sprintf("listing NICs for VM %s", vmid), o.logger, retries, func() error { - response, e := o.conn.SystemService().VmsService().VmService(vmid).NicsService().List().Send() + response, e := o.conn.SystemService().VmsService().VmService(string(vmid)).NicsService().List().Send() if e != nil { return e } @@ -32,7 +32,7 @@ func (o *oVirtClient) ListNICs(vmid string, retries ...RetryStrategy) (result [] return } -func (m *mockClient) ListNICs(vmid string, _ ...RetryStrategy) ([]NIC, error) { +func (m *mockClient) ListNICs(vmid VMID, _ ...RetryStrategy) ([]NIC, error) { m.lock.Lock() defer m.lock.Unlock() var result []NIC diff --git a/nic_remove.go b/nic_remove.go index e10907b..0cc1eed 100644 --- a/nic_remove.go +++ b/nic_remove.go @@ -4,14 +4,14 @@ import ( "fmt" ) -func (o *oVirtClient) RemoveNIC(vmid string, id string, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) RemoveNIC(vmid VMID, id string, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("removing NIC %s from VM %s", id, vmid), o.logger, retries, func() error { - _, err := o.conn.SystemService().VmsService().VmService(vmid).NicsService().NicService(id).Remove().Send() + _, err := o.conn.SystemService().VmsService().VmService(string(vmid)).NicsService().NicService(id).Remove().Send() if err != nil { return err } @@ -20,7 +20,7 @@ func (o *oVirtClient) RemoveNIC(vmid string, id string, retries ...RetryStrategy return } -func (m *mockClient) RemoveNIC(vmid string, id string, _ ...RetryStrategy) error { +func (m *mockClient) RemoveNIC(vmid VMID, id string, _ ...RetryStrategy) error { m.lock.Lock() defer m.lock.Unlock() if _, ok := m.vms[vmid]; !ok { diff --git a/nic_update.go b/nic_update.go index 9095733..4d43346 100644 --- a/nic_update.go +++ b/nic_update.go @@ -7,12 +7,12 @@ import ( ) func (o *oVirtClient) UpdateNIC( - vmid string, + vmid VMID, nicID string, params UpdateNICParameters, retries ...RetryStrategy, ) (result NIC, err error) { - req := o.conn.SystemService().VmsService().VmService(vmid).NicsService().NicService(nicID).Update() + req := o.conn.SystemService().VmsService().VmService(string(vmid)).NicsService().NicService(nicID).Update() nicBuilder := ovirtsdk.NewNicBuilder().Id(nicID) if name := params.Name(); name != nil { @@ -48,7 +48,7 @@ func (o *oVirtClient) UpdateNIC( return result, err } -func (m *mockClient) UpdateNIC(vmid string, nicID string, params UpdateNICParameters, retries ...RetryStrategy) ( +func (m *mockClient) UpdateNIC(vmid VMID, nicID string, params UpdateNICParameters, retries ...RetryStrategy) ( NIC, error, ) { diff --git a/template.go b/template.go index 8be1c1b..580acfb 100644 --- a/template.go +++ b/template.go @@ -9,7 +9,7 @@ import ( // TemplateClient represents the portion of the client that deals with VM templates. type TemplateClient interface { // CreateTemplate creates a new template from an existing VM. - CreateTemplate(vmID string, name string, params OptionalTemplateCreateParameters, retries ...RetryStrategy) ( + CreateTemplate(vmID VMID, name string, params OptionalTemplateCreateParameters, retries ...RetryStrategy) ( Template, error, ) diff --git a/template_create.go b/template_create.go index 266054e..a42a78c 100644 --- a/template_create.go +++ b/template_create.go @@ -8,7 +8,7 @@ import ( ) func (o *oVirtClient) CreateTemplate( - vmID string, + vmID VMID, name string, params OptionalTemplateCreateParameters, retries ...RetryStrategy, @@ -23,7 +23,7 @@ func (o *oVirtClient) CreateTemplate( retries, func() error { tpl := ovirtsdk.NewTemplateBuilder() - tpl.VmBuilder(ovirtsdk.NewVmBuilder().Id(vmID)) + tpl.VmBuilder(ovirtsdk.NewVmBuilder().Id(string(vmID))) tpl.Name(name) if desc := params.Description(); desc != nil { tpl.Description(*desc) @@ -55,7 +55,7 @@ func (o *oVirtClient) CreateTemplate( } func (m *mockClient) CreateTemplate( - vmID string, + vmID VMID, name string, params OptionalTemplateCreateParameters, _ ...RetryStrategy, @@ -117,7 +117,7 @@ func (m *mockClient) handlePostTemplateCreation(tpl *template) { }() } -func (m *mockClient) attachTemplateDisks(vmID string, tpl *template) { +func (m *mockClient) attachTemplateDisks(vmID VMID, tpl *template) { i := 0 for _, attachment := range m.vmDiskAttachmentsByVM[vmID] { disk := m.disks[attachment.diskID] diff --git a/vm.go b/vm.go index 5f46db9..f6512f6 100644 --- a/vm.go +++ b/vm.go @@ -11,7 +11,10 @@ import ( ovirtsdk "github.com/ovirt/go-ovirt" ) -//go:generate go run scripts/rest/rest.go -i "Vm" -n "vm" -o "VM" +//go:generate go run scripts/rest/rest.go -i "Vm" -n "vm" -o "VM" -T VMID + +// VMID is a specific type for virtual machine IDs. +type VMID string // VMClient includes the methods required to deal with virtual machines. type VMClient interface { @@ -24,52 +27,52 @@ type VMClient interface { retries ...RetryStrategy, ) (VM, error) // GetVM returns a single virtual machine based on an ID. - GetVM(id string, retries ...RetryStrategy) (VM, error) + GetVM(id VMID, retries ...RetryStrategy) (VM, error) // GetVMByName returns a single virtual machine based on a Name. GetVMByName(name string, retries ...RetryStrategy) (VM, error) // UpdateVM updates the virtual machine with the given parameters. // Use UpdateVMParams to obtain a builder for the params. - UpdateVM(id string, params UpdateVMParameters, retries ...RetryStrategy) (VM, error) + UpdateVM(id VMID, params UpdateVMParameters, retries ...RetryStrategy) (VM, error) // AutoOptimizeVMCPUPinningSettings sets the CPU settings to optimized. - AutoOptimizeVMCPUPinningSettings(id string, optimize bool, retries ...RetryStrategy) error + AutoOptimizeVMCPUPinningSettings(id VMID, optimize bool, retries ...RetryStrategy) error // StartVM triggers a VM start. The actual VM startup will take time and should be waited for via the // WaitForVMStatus call. - StartVM(id string, retries ...RetryStrategy) error + StartVM(id VMID, retries ...RetryStrategy) error // StopVM triggers a VM power-off. The actual VM stop will take time and should be waited for via the // WaitForVMStatus call. The force parameter will cause the shutdown to proceed even if a backup is currently // running. - StopVM(id string, force bool, retries ...RetryStrategy) error + StopVM(id VMID, force bool, retries ...RetryStrategy) error // ShutdownVM triggers a VM shutdown. The actual VM shutdown will take time and should be waited for via the // WaitForVMStatus call. The force parameter will cause the shutdown to proceed even if a backup is currently // running. - ShutdownVM(id string, force bool, retries ...RetryStrategy) error + ShutdownVM(id VMID, force bool, retries ...RetryStrategy) error // WaitForVMStatus waits for the VM to reach the desired status. - WaitForVMStatus(id string, status VMStatus, retries ...RetryStrategy) (VM, error) + WaitForVMStatus(id VMID, status VMStatus, retries ...RetryStrategy) (VM, error) // ListVMs returns a list of all virtual machines. ListVMs(retries ...RetryStrategy) ([]VM, error) // SearchVMs lists all virtual machines matching a certain criteria specified in params. SearchVMs(params VMSearchParameters, retries ...RetryStrategy) ([]VM, error) // RemoveVM removes a virtual machine specified by id. - RemoveVM(id string, retries ...RetryStrategy) error + RemoveVM(id VMID, retries ...RetryStrategy) error // AddTagToVM Add tag specified by id to a VM. - AddTagToVM(id string, tagID string, retries ...RetryStrategy) error + AddTagToVM(id VMID, tagID string, retries ...RetryStrategy) error // AddTagToVMByName Add tag specified by Name to a VM. - AddTagToVMByName(id string, tagName string, retries ...RetryStrategy) error + AddTagToVMByName(id VMID, tagName string, retries ...RetryStrategy) error // RemoveTagFromVM removes the specified tag from the specified VM. - RemoveTagFromVM(id string, tagID string, retries ...RetryStrategy) error + RemoveTagFromVM(id VMID, tagID string, retries ...RetryStrategy) error // ListVMTags lists the tags attached to a VM. - ListVMTags(id string, retries ...RetryStrategy) (result []Tag, err error) + ListVMTags(id VMID, retries ...RetryStrategy) (result []Tag, err error) // GetVMIPAddresses fetches the IP addresses reported by the guest agent in the VM. // Optional parameters can be passed to filter the result list. // // The returned result will be a map of network interface names and the list of IP addresses assigned to them, // excluding any IP addresses in the specified parameters. - GetVMIPAddresses(id string, params VMIPSearchParams, retries ...RetryStrategy) (map[string][]net.IP, error) + GetVMIPAddresses(id VMID, params VMIPSearchParams, retries ...RetryStrategy) (map[string][]net.IP, error) // WaitForVMIPAddresses waits for at least one IP address to be reported that is not in specified ranges. // // The returned result will be a map of network interface names and the list of IP addresses assigned to them, // excluding any IP addresses in the specified parameters. - WaitForVMIPAddresses(id string, params VMIPSearchParams, retries ...RetryStrategy) (map[string][]net.IP, error) + WaitForVMIPAddresses(id VMID, params VMIPSearchParams, retries ...RetryStrategy) (map[string][]net.IP, error) // WaitForNonLocalVMIPAddress waits for at least one IP address to be reported that is not in the following ranges: // // - 0.0.0.0/32 @@ -89,7 +92,7 @@ type VMClient interface { // // The returned result will be a map of network interface names and the list of non-local IP addresses assigned to // them. - WaitForNonLocalVMIPAddress(id string, retries ...RetryStrategy) (map[string][]net.IP, error) + WaitForNonLocalVMIPAddress(id VMID, retries ...RetryStrategy) (map[string][]net.IP, error) } // VMIPSearchParams contains the parameters for searching or waiting for IP addresses on a VM. @@ -195,7 +198,7 @@ func (v *vmIPSearchParams) WithExcludedInterfacePattern(interfaceNamePattern *re // VMData is the core of VM providing only data access functions. type VMData interface { // ID returns the unique identifier (UUID) of the current virtual machine. - ID() string + ID() VMID // Name is the user-defined name of the virtual machine. Name() string // Comment is the comment added to the VM. @@ -1720,7 +1723,7 @@ func (v vmParams) Comment() string { type vm struct { client Client - id string + id VMID name string comment string clusterID ClusterID @@ -1937,7 +1940,7 @@ func (v *vm) TemplateID() TemplateID { return v.templateID } -func (v *vm) ID() string { +func (v *vm) ID() VMID { return v.id } @@ -2094,7 +2097,7 @@ func vmIDConverter(sdkObject *ovirtsdk.Vm, v *vm) error { if !ok { return newError(EFieldMissing, "id field missing from VM object") } - v.id = id + v.id = VMID(id) return nil } diff --git a/vm_create.go b/vm_create.go index 9879f85..7983b5f 100644 --- a/vm_create.go +++ b/vm_create.go @@ -362,7 +362,7 @@ func (m *mockClient) createVM( vm := &vm{ m, - id, + VMID(id), name, params.Comment(), clusterID, @@ -380,7 +380,7 @@ func (m *mockClient) createVM( m.createVMType(params), m.createVMOS(params), } - m.vms[id] = vm + m.vms[VMID(id)] = vm return vm } diff --git a/vm_get.go b/vm_get.go index 04d8082..9f5477b 100644 --- a/vm_get.go +++ b/vm_get.go @@ -6,14 +6,14 @@ import ( "fmt" ) -func (o *oVirtClient) GetVM(id string, retries ...RetryStrategy) (result VM, err error) { +func (o *oVirtClient) GetVM(id VMID, retries ...RetryStrategy) (result VM, err error) { retries = defaultRetries(retries, defaultReadTimeouts(o)) err = retry( fmt.Sprintf("getting vm %s", id), o.logger, retries, func() error { - response, err := o.conn.SystemService().VmsService().VmService(id).Get().Send() + response, err := o.conn.SystemService().VmsService().VmService(string(id)).Get().Send() if err != nil { return err } @@ -39,7 +39,7 @@ func (o *oVirtClient) GetVM(id string, retries ...RetryStrategy) (result VM, err return } -func (m *mockClient) GetVM(id string, _ ...RetryStrategy) (VM, error) { +func (m *mockClient) GetVM(id VMID, _ ...RetryStrategy) (VM, error) { m.lock.Lock() defer m.lock.Unlock() if item, ok := m.vms[id]; ok { diff --git a/vm_ip_get.go b/vm_ip_get.go index 260932d..6f1e20e 100644 --- a/vm_ip_get.go +++ b/vm_ip_get.go @@ -8,7 +8,7 @@ import ( ovirtsdk "github.com/ovirt/go-ovirt" ) -func (m *mockClient) GetVMIPAddresses(id string, params VMIPSearchParams, _ ...RetryStrategy) (map[string][]net.IP, error) { +func (m *mockClient) GetVMIPAddresses(id VMID, params VMIPSearchParams, _ ...RetryStrategy) (map[string][]net.IP, error) { m.lock.Lock() defer m.lock.Unlock() @@ -21,7 +21,7 @@ func (m *mockClient) GetVMIPAddresses(id string, params VMIPSearchParams, _ ...R return filterReportedIPList(source, params), nil } -func (o *oVirtClient) GetVMIPAddresses(id string, params VMIPSearchParams, retries ...RetryStrategy) (result map[string][]net.IP, err error) { +func (o *oVirtClient) GetVMIPAddresses(id VMID, params VMIPSearchParams, retries ...RetryStrategy) (result map[string][]net.IP, err error) { retries = defaultRetries(retries, defaultReadTimeouts(o)) result = map[string][]net.IP{} err = retry( @@ -29,7 +29,7 @@ func (o *oVirtClient) GetVMIPAddresses(id string, params VMIPSearchParams, retri o.logger, retries, func() error { - reportedDevicesResponse, err := o.conn.SystemService().VmsService().VmService(id).ReportedDevicesService().List().Send() + reportedDevicesResponse, err := o.conn.SystemService().VmsService().VmService(string(id)).ReportedDevicesService().List().Send() reportedDevices, ok := reportedDevicesResponse.ReportedDevice() if !ok { diff --git a/vm_ip_wait.go b/vm_ip_wait.go index 384ceda..c0ef0ed 100644 --- a/vm_ip_wait.go +++ b/vm_ip_wait.go @@ -5,16 +5,16 @@ import ( "net" ) -func (m *mockClient) WaitForVMIPAddresses(id string, params VMIPSearchParams, retries ...RetryStrategy) (result map[string][]net.IP, err error) { +func (m *mockClient) WaitForVMIPAddresses(id VMID, params VMIPSearchParams, retries ...RetryStrategy) (result map[string][]net.IP, err error) { return waitForIPAddresses(id, params, retries, m.logger, m) } -func (o *oVirtClient) WaitForVMIPAddresses(id string, params VMIPSearchParams, retries ...RetryStrategy) (map[string][]net.IP, error) { +func (o *oVirtClient) WaitForVMIPAddresses(id VMID, params VMIPSearchParams, retries ...RetryStrategy) (map[string][]net.IP, error) { return waitForIPAddresses(id, params, retries, o.logger, o) } func waitForIPAddresses( - id string, + id VMID, params VMIPSearchParams, retries []RetryStrategy, logger Logger, diff --git a/vm_ip_wait_nonlocal.go b/vm_ip_wait_nonlocal.go index 9527d96..ad75b39 100644 --- a/vm_ip_wait_nonlocal.go +++ b/vm_ip_wait_nonlocal.go @@ -26,10 +26,10 @@ var nonLocalIPSearchParams = NewVMIPSearchParams(). WithExcludedInterface("lo"). WithExcludedInterfacePattern(regexp.MustCompile("^dummy[0-9]+$")) -func (m *mockClient) WaitForNonLocalVMIPAddress(id string, retries ...RetryStrategy) (map[string][]net.IP, error) { +func (m *mockClient) WaitForNonLocalVMIPAddress(id VMID, retries ...RetryStrategy) (map[string][]net.IP, error) { return m.WaitForVMIPAddresses(id, nonLocalIPSearchParams, retries...) } -func (o *oVirtClient) WaitForNonLocalVMIPAddress(id string, retries ...RetryStrategy) (map[string][]net.IP, error) { +func (o *oVirtClient) WaitForNonLocalVMIPAddress(id VMID, retries ...RetryStrategy) (map[string][]net.IP, error) { return o.WaitForVMIPAddresses(id, nonLocalIPSearchParams, retries...) } diff --git a/vm_optimize_pinning.go b/vm_optimize_pinning.go index 382b702..50683f5 100644 --- a/vm_optimize_pinning.go +++ b/vm_optimize_pinning.go @@ -2,7 +2,7 @@ package ovirtclient import "fmt" -func (o *oVirtClient) AutoOptimizeVMCPUPinningSettings(id string, optimize bool, retries ...RetryStrategy) error { +func (o *oVirtClient) AutoOptimizeVMCPUPinningSettings(id VMID, optimize bool, retries ...RetryStrategy) error { return retry( fmt.Sprintf("optimizing CPU pinning settings for VM %s", id), o.logger, @@ -10,7 +10,7 @@ func (o *oVirtClient) AutoOptimizeVMCPUPinningSettings(id string, optimize bool, func() error { _, err := o.conn.SystemService(). VmsService(). - VmService(id). + VmService(string(id)). AutoPinCpuAndNumaNodes(). OptimizeCpuSettings(optimize). Send() @@ -18,7 +18,7 @@ func (o *oVirtClient) AutoOptimizeVMCPUPinningSettings(id string, optimize bool, }) } -func (m *mockClient) AutoOptimizeVMCPUPinningSettings(_ string, _ bool, _ ...RetryStrategy) error { +func (m *mockClient) AutoOptimizeVMCPUPinningSettings(_ VMID, _ bool, _ ...RetryStrategy) error { // This function cannot be simulated as the VM object does not contain any observable return values apart from the // NUMA nodes being moved around. If you know of a way please add a mock and add a test for it. return nil diff --git a/vm_remove.go b/vm_remove.go index 0f402a1..25c70ba 100644 --- a/vm_remove.go +++ b/vm_remove.go @@ -4,14 +4,14 @@ import ( "fmt" ) -func (o *oVirtClient) RemoveVM(id string, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) RemoveVM(id VMID, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("removing VM %s", id), o.logger, retries, func() error { - _, err := o.conn.SystemService().VmsService().VmService(id).Remove().Send() + _, err := o.conn.SystemService().VmsService().VmService(string(id)).Remove().Send() if err != nil { return err } @@ -20,7 +20,7 @@ func (o *oVirtClient) RemoveVM(id string, retries ...RetryStrategy) (err error) return } -func (m *mockClient) RemoveVM(id string, retries ...RetryStrategy) error { +func (m *mockClient) RemoveVM(id VMID, retries ...RetryStrategy) error { retries = defaultRetries(retries, defaultWriteTimeouts(m)) diff --git a/vm_shutdown.go b/vm_shutdown.go index 3a91a03..8ee1ef5 100644 --- a/vm_shutdown.go +++ b/vm_shutdown.go @@ -5,20 +5,20 @@ import ( "time" ) -func (o *oVirtClient) ShutdownVM(id string, force bool, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) ShutdownVM(id VMID, force bool, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("shutting down VM %s", id), o.logger, retries, func() error { - _, err := o.conn.SystemService().VmsService().VmService(id).Shutdown().Force(force).Send() + _, err := o.conn.SystemService().VmsService().VmService(string(id)).Shutdown().Force(force).Send() return err }) return } -func (m *mockClient) ShutdownVM(id string, force bool, _ ...RetryStrategy) error { +func (m *mockClient) ShutdownVM(id VMID, force bool, _ ...RetryStrategy) error { m.lock.Lock() defer m.lock.Unlock() if item, ok := m.vms[id]; ok { diff --git a/vm_start.go b/vm_start.go index aed6042..1c25f58 100644 --- a/vm_start.go +++ b/vm_start.go @@ -6,20 +6,20 @@ import ( "time" ) -func (o *oVirtClient) StartVM(id string, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) StartVM(id VMID, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("starting VM %s", id), o.logger, retries, func() error { - _, err := o.conn.SystemService().VmsService().VmService(id).Start().Send() + _, err := o.conn.SystemService().VmsService().VmService(string(id)).Start().Send() return err }) return } -func (m *mockClient) StartVM(id string, _ ...RetryStrategy) error { +func (m *mockClient) StartVM(id VMID, _ ...RetryStrategy) error { m.lock.Lock() defer m.lock.Unlock() item, ok := m.vms[id] @@ -79,7 +79,7 @@ func (m *mockClient) StartVM(id string, _ ...RetryStrategy) error { return nil } -func (m *mockClient) findSuitableHost(vmID string) (string, error) { +func (m *mockClient) findSuitableHost(vmID VMID) (string, error) { var affectedAffinityGroups []*affinityGroup for _, clusterAffinityGroups := range m.affinityGroups { for _, affinityGroup := range clusterAffinityGroups { diff --git a/vm_stop.go b/vm_stop.go index a954da5..8466d0c 100644 --- a/vm_stop.go +++ b/vm_stop.go @@ -6,20 +6,20 @@ import ( "time" ) -func (o *oVirtClient) StopVM(id string, force bool, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) StopVM(id VMID, force bool, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("stopping VM %s", id), o.logger, retries, func() error { - _, err := o.conn.SystemService().VmsService().VmService(id).Stop().Force(force).Send() + _, err := o.conn.SystemService().VmsService().VmService(string(id)).Stop().Force(force).Send() return err }) return } -func (m *mockClient) StopVM(id string, force bool, _ ...RetryStrategy) error { +func (m *mockClient) StopVM(id VMID, force bool, _ ...RetryStrategy) error { m.lock.Lock() defer m.lock.Unlock() if item, ok := m.vms[id]; ok { diff --git a/vm_tag_add.go b/vm_tag_add.go index 0ef7ad8..61f82a4 100644 --- a/vm_tag_add.go +++ b/vm_tag_add.go @@ -6,14 +6,14 @@ import ( ovirtsdk "github.com/ovirt/go-ovirt" ) -func (o *oVirtClient) AddTagToVM(id string, tagID string, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) AddTagToVM(id VMID, tagID string, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("adding tag %s to VM %s", tagID, id), o.logger, retries, func() error { - _, err := o.conn.SystemService().VmsService().VmService(id).TagsService().Add(). + _, err := o.conn.SystemService().VmsService().VmService(string(id)).TagsService().Add(). Tag(ovirtsdk.NewTagBuilder().Id(tagID).MustBuild()).Send() if err != nil { @@ -24,7 +24,7 @@ func (o *oVirtClient) AddTagToVM(id string, tagID string, retries ...RetryStrate return } -func (m *mockClient) AddTagToVM(id string, tagID string, retries ...RetryStrategy) (err error) { +func (m *mockClient) AddTagToVM(id VMID, tagID string, retries ...RetryStrategy) (err error) { m.lock.Lock() defer m.lock.Unlock() @@ -41,14 +41,14 @@ func (m *mockClient) AddTagToVM(id string, tagID string, retries ...RetryStrateg } -func (o *oVirtClient) AddTagToVMByName(id string, tagName string, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) AddTagToVMByName(id VMID, tagName string, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("adding tag %s to VM %s", tagName, id), o.logger, retries, func() error { - _, err := o.conn.SystemService().VmsService().VmService(id).TagsService().Add(). + _, err := o.conn.SystemService().VmsService().VmService(string(id)).TagsService().Add(). Tag(ovirtsdk.NewTagBuilder().Name(tagName).MustBuild()).Send() return err @@ -56,7 +56,7 @@ func (o *oVirtClient) AddTagToVMByName(id string, tagName string, retries ...Ret return } -func (m *mockClient) AddTagToVMByName(id string, tagName string, retries ...RetryStrategy) (err error) { +func (m *mockClient) AddTagToVMByName(id VMID, tagName string, retries ...RetryStrategy) (err error) { m.lock.Lock() defer m.lock.Unlock() diff --git a/vm_tag_list.go b/vm_tag_list.go index ab97214..e341345 100644 --- a/vm_tag_list.go +++ b/vm_tag_list.go @@ -4,14 +4,14 @@ import ( "fmt" ) -func (o *oVirtClient) ListVMTags(id string, retries ...RetryStrategy) (result []Tag, err error) { +func (o *oVirtClient) ListVMTags(id VMID, retries ...RetryStrategy) (result []Tag, err error) { retries = defaultRetries(retries, defaultReadTimeouts(o)) err = retry( fmt.Sprintf("listing tags for vm %s", id), o.logger, retries, func() error { - response, err := o.conn.SystemService().VmsService().VmService(id).TagsService().List().Send() + response, err := o.conn.SystemService().VmsService().VmService(string(id)).TagsService().List().Send() if err != nil { return err } @@ -35,7 +35,7 @@ func (o *oVirtClient) ListVMTags(id string, retries ...RetryStrategy) (result [] return } -func (m *mockClient) ListVMTags(id string, retries ...RetryStrategy) (result []Tag, err error) { +func (m *mockClient) ListVMTags(id VMID, _ ...RetryStrategy) (result []Tag, err error) { m.lock.Lock() defer m.lock.Unlock() if _, ok := m.vms[id]; !ok { diff --git a/vm_tag_remove.go b/vm_tag_remove.go index 1e98b67..01979a7 100644 --- a/vm_tag_remove.go +++ b/vm_tag_remove.go @@ -4,7 +4,7 @@ import ( "fmt" ) -func (o *oVirtClient) RemoveTagFromVM(id string, tagID string, retries ...RetryStrategy) (err error) { +func (o *oVirtClient) RemoveTagFromVM(id VMID, tagID string, retries ...RetryStrategy) (err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) err = retry( fmt.Sprintf("removing tag from VM %s", id), @@ -14,7 +14,7 @@ func (o *oVirtClient) RemoveTagFromVM(id string, tagID string, retries ...RetryS _, err := o.conn. SystemService(). VmsService(). - VmService(id). + VmService(string(id)). TagsService(). TagService(tagID). Remove(). @@ -24,7 +24,7 @@ func (o *oVirtClient) RemoveTagFromVM(id string, tagID string, retries ...RetryS return } -func (m *mockClient) RemoveTagFromVM(id string, tagID string, retries ...RetryStrategy) error { +func (m *mockClient) RemoveTagFromVM(id VMID, tagID string, retries ...RetryStrategy) error { m.lock.Lock() defer m.lock.Unlock() if _, ok := m.vms[id]; !ok { diff --git a/vm_update.go b/vm_update.go index 9febe76..b26928e 100644 --- a/vm_update.go +++ b/vm_update.go @@ -7,14 +7,14 @@ import ( ) func (o *oVirtClient) UpdateVM( - id string, + id VMID, params UpdateVMParameters, retries ...RetryStrategy, ) (result VM, err error) { retries = defaultRetries(retries, defaultWriteTimeouts(o)) vm := &ovirtsdk.Vm{} - vm.SetId(id) + vm.SetId(string(id)) if name := params.Name(); name != nil { if *name == "" { return nil, newError(EBadArgument, "name must not be empty for VM update") @@ -30,7 +30,7 @@ func (o *oVirtClient) UpdateVM( o.logger, retries, func() error { - response, err := o.conn.SystemService().VmsService().VmService(id).Update().Vm(vm).Send() + response, err := o.conn.SystemService().VmsService().VmService(string(id)).Update().Vm(vm).Send() if err != nil { return wrap(err, EUnidentified, "failed to update VM") } @@ -51,7 +51,7 @@ func (o *oVirtClient) UpdateVM( return result, err } -func (m *mockClient) UpdateVM(id string, params UpdateVMParameters, _ ...RetryStrategy) (VM, error) { +func (m *mockClient) UpdateVM(id VMID, params UpdateVMParameters, _ ...RetryStrategy) (VM, error) { m.lock.Lock() defer m.lock.Unlock() diff --git a/vm_wait_for_status.go b/vm_wait_for_status.go index 0087057..6594b2d 100644 --- a/vm_wait_for_status.go +++ b/vm_wait_for_status.go @@ -4,7 +4,7 @@ import ( "fmt" ) -func (o *oVirtClient) WaitForVMStatus(id string, status VMStatus, retries ...RetryStrategy) (vm VM, err error) { +func (o *oVirtClient) WaitForVMStatus(id VMID, status VMStatus, retries ...RetryStrategy) (vm VM, err error) { retries = defaultRetries(retries, defaultLongTimeouts(o)) err = retry( fmt.Sprintf("waiting for VM %s status %s", id, status), @@ -23,7 +23,7 @@ func (o *oVirtClient) WaitForVMStatus(id string, status VMStatus, retries ...Ret return } -func (m *mockClient) WaitForVMStatus(id string, status VMStatus, retries ...RetryStrategy) (vm VM, err error) { +func (m *mockClient) WaitForVMStatus(id VMID, status VMStatus, retries ...RetryStrategy) (vm VM, err error) { retries = defaultRetries(retries, defaultLongTimeouts(m)) err = retry( fmt.Sprintf("waiting for VM %s status %s", id, status),