From 0fbd0c1a9e4f1335f28cc29b06c109778fbd7d85 Mon Sep 17 00:00:00 2001 From: mgold1234 Date: Thu, 10 Feb 2022 21:40:58 +0200 Subject: [PATCH] This PR fixes #82 and check that vnic doesn't has same network --- client_nic_create_test.go | 51 +++++++++++++++++++++++++++++++++----- client_vnicprofile_test.go | 33 +++++++++++++++++++++--- 2 files changed, 75 insertions(+), 9 deletions(-) diff --git a/client_nic_create_test.go b/client_nic_create_test.go index f5bb1ef..df90430 100644 --- a/client_nic_create_test.go +++ b/client_nic_create_test.go @@ -7,6 +7,8 @@ import ( ovirtclient "github.com/ovirt/go-ovirt-client" ) +const nicName = "test_duplicate_name" + func TestVMNICCreation(t *testing.T) { t.Parallel() helper := getHelper(t) @@ -32,7 +34,6 @@ func TestVMNICCreation(t *testing.T) { func TestDuplicateVMNICCreationWithSameName(t *testing.T) { t.Parallel() helper := getHelper(t) - nicName := "test_duplicate_name" vm := assertCanCreateVM( t, @@ -59,10 +60,48 @@ func TestDuplicateVMNICCreationWithSameName(t *testing.T) { assertNICCount(t, vm, 0) } -func TestDuplicateVMNICCreationWithSameNameAndDiffVNICProfile(t *testing.T) { +func TestDuplicateVMNICCreationWithSameNameDiffVNICProfileDiffNetwork(t *testing.T) { + t.Parallel() + helper := getHelper(t) + + vm := assertCanCreateVM( + t, + helper, + fmt.Sprintf("nic_test_%s", helper.GenerateRandomID(5)), + ovirtclient.CreateVMParams(), + ) + assertNICCount(t, vm, 0) + nic1 := assertCanCreateNIC( + t, + helper, + vm, + nicName, + ovirtclient.CreateNICParams()) + assertNICCount(t, vm, 1) + DiffVNICProfileDiffNetwork, _ := assertCanFindDiffVNICProfileDiffNetwork(helper, helper.GetVNICProfileID()) + if DiffVNICProfileDiffNetwork == "" { + assertCannotCreateNICWithSameName( + t, + helper, + vm, + nicName, + ovirtclient.CreateNICParams()) + } else { + assertCannotCreateNICWithVNICProfile( + t, + vm, + nicName, + DiffVNICProfileDiffNetwork, + ovirtclient.CreateNICParams()) + } + assertNICCount(t, vm, 1) + assertCanRemoveNIC(t, nic1) + assertNICCount(t, vm, 0) +} + +func TestDuplicateVMNICCreationWithSameNameDiffVNICProfileSameNetwork(t *testing.T) { t.Parallel() helper := getHelper(t) - nicName := "test_duplicate_name" vm := assertCanCreateVM( t, @@ -78,8 +117,8 @@ func TestDuplicateVMNICCreationWithSameNameAndDiffVNICProfile(t *testing.T) { nicName, ovirtclient.CreateNICParams()) assertNICCount(t, vm, 1) - DiffVNICProfile, _ := assertCanFindDiffVNICProfile(helper, helper.GetVNICProfileID()) - if DiffVNICProfile == "" { + DiffVNICProfileSameNetwork, _ := assertCanFindDiffVNICProfileSameNetwork(helper, helper.GetVNICProfileID()) + if DiffVNICProfileSameNetwork == "" { assertCannotCreateNICWithSameName( t, helper, @@ -91,7 +130,7 @@ func TestDuplicateVMNICCreationWithSameNameAndDiffVNICProfile(t *testing.T) { t, vm, nicName, - DiffVNICProfile, + DiffVNICProfileSameNetwork, ovirtclient.CreateNICParams()) } assertNICCount(t, vm, 1) diff --git a/client_vnicprofile_test.go b/client_vnicprofile_test.go index d9443e9..1dc0a9e 100644 --- a/client_vnicprofile_test.go +++ b/client_vnicprofile_test.go @@ -56,17 +56,44 @@ func assertCanCreateVNICProfile(t *testing.T, helper ovirtclient.TestHelper) ovi return newVNICProfile } -func assertCanFindDiffVNICProfile(helper ovirtclient.TestHelper, vnicProfileID string) (string, error) { +func assertCanFindDiffVNICProfileDiffNetwork(helper ovirtclient.TestHelper, vnicProfileID string) (string, error) { client := helper.GetClient() + existVNICProfile, err := client.GetVNICProfile(vnicProfileID) + if err != nil { + return "", fmt.Errorf("failed to verify VNIC profile ID %s", vnicProfileID) + } + networkID := existVNICProfile.NetworkID() + vnicProfiles, err := client.ListVNICProfiles() + if err != nil { + return "", fmt.Errorf("failed to list VNIC profiles (%w)", err) + } + for _, vnicProfile := range vnicProfiles { + vnicID := vnicProfile.ID() + if vnicID != vnicProfileID && vnicProfile.NetworkID() != networkID { + return vnicID, nil + } + } + return "", fmt.Errorf( + "failed to find different VNIC profile ID and Different Network for testing, use the exiting one") +} + +func assertCanFindDiffVNICProfileSameNetwork(helper ovirtclient.TestHelper, vnicProfileID string) (string, error) { + client := helper.GetClient() + existVNICProfile, err := client.GetVNICProfile(vnicProfileID) + if err != nil { + return "", fmt.Errorf("failed to verify VNIC profile ID %s", vnicProfileID) + } + networkID := existVNICProfile.NetworkID() vnicProfiles, err := client.ListVNICProfiles() if err != nil { return "", fmt.Errorf("failed to list VNIC profiles (%w)", err) } for _, vnicProfile := range vnicProfiles { vnicID := vnicProfile.ID() - if vnicProfile.ID() != vnicProfileID { + if vnicID != vnicProfileID && vnicProfile.NetworkID() == networkID { return vnicID, nil } } - return "", fmt.Errorf("failed to find different VNIC profile ID for testing, use the exiting one") + return "", fmt.Errorf( + "failed to find different VNIC profile ID and same Network for testing, use the exiting one") }