func TestDeleteLogicalSwitchGroup(t *testing.T) {
	var (
		d                      *OVTest
		c                      *ov.OVClient
		testName               string
		testLogicalSwitchGroup ov.LogicalSwitchGroup
	)
	if os.Getenv("ONEVIEW_TEST_ACCEPTANCE") == "true" {
		d, c = getTestDriverA("test_logical_switch_group")
		if c == nil {
			t.Fatalf("Failed to execute getTestDriver() ")
		}
		testName = d.Tc.GetTestData(d.Env, "Name").(string)

		err := c.DeleteLogicalSwitchGroup(testName)
		assert.NoError(t, err, "DeleteLogicalSwitchGroup err-> %s", err)

		testLogicalSwitchGroup, err = c.GetLogicalSwitchGroupByName(testName)
		assert.NoError(t, err, "GetLogicalSwitchGroupByName with deleted logical switch gorup-> %+v", err)
		assert.Equal(t, "", testLogicalSwitchGroup.Name, fmt.Sprintf("Problem getting logicalSwitchGroup name, %+v", testLogicalSwitchGroup))
	} else {
		_, c = getTestDriverU("test_logical_switch_group")
		err := c.DeleteLogicalSwitchGroup("footest")
		assert.Error(t, err, fmt.Sprintf("ALL ok, no error, caught as expected: %s,%+v\n", err, testLogicalSwitchGroup))
	}

}
func TestGetLogicalSwitchGroupByName(t *testing.T) {
	var (
		d        *OVTest
		c        *ov.OVClient
		testName string
	)
	if os.Getenv("ONEVIEW_TEST_ACCEPTANCE") == "true" {
		d, c = getTestDriverA("test_logical_switch_group")
		if c == nil {
			t.Fatalf("Failed to execute getTestDriver() ")
		}
		testName = d.Tc.GetTestData(d.Env, "Name").(string)

		testLogicalSwitchGroup, err := c.GetLogicalSwitchGroupByName(testName)
		assert.NoError(t, err, "GetLogicalSwitchGroupByName thew an error -> %s", err)
		assert.Equal(t, testName, testLogicalSwitchGroup.Name)

		testLogicalSwitchGroup, err = c.GetLogicalSwitchGroupByName("bad")
		assert.NoError(t, err, "GetLogicalSwitchGroupByName with fake name -> %s", err)
		assert.Equal(t, "", testLogicalSwitchGroup.Name)

	} else {
		d, c = getTestDriverU("test_logical_switch_group")
		testName = d.Tc.GetTestData(d.Env, "Name").(string)
		data, err := c.GetLogicalSwitchGroupByName(testName)
		assert.Error(t, err, fmt.Sprintf("ALL ok, no error, caught as expected: %s,%+v\n", err, data))
	}
}
func TestCreateLogicalSwitchGroup(t *testing.T) {
	var (
		d        *OVTest
		c        *ov.OVClient
		testName string
	)
	if os.Getenv("ONEVIEW_TEST_ACCEPTANCE") == "true" {
		d, c = getTestDriverA("test_logical_switch_group")
		if c == nil {
			t.Fatalf("Failed to execute getTestDriver() ")
		}
		// find out if the test logicalSwitchGroup already exist
		testName = d.Tc.GetTestData(d.Env, "Name").(string)

		testLogicalSwitchGroup, err := c.GetLogicalSwitchGroupByName(testName)
		assert.NoError(t, err, "CreateLogicalSwitchGroup get the LogicalSwitchError error -> %s", err)

		if testLogicalSwitchGroup.URI.IsNil() {

			switchMapData := d.Tc.GetTestData(d.Env, "SwitchMapTemplate").(map[string]interface{})

			locationEntry := ov.LocationEntry{
				RelativeValue: 1,
				Type:          switchMapData["SwitchMapEntryTemplates"].([]interface{})[0].(map[string]interface{})["LogicalLocation"].(map[string]interface{})["LocationEntries"].([]interface{})[0].(map[string]interface{})["Type"].(string),
			}
			locationEntries := make([]ov.LocationEntry, 1)
			locationEntries[0] = locationEntry
			logicalLocation := ov.LogicalLocation{
				LocationEntries: locationEntries,
			}

			switchMapEntry := ov.SwitchMapEntry{
				PermittedSwitchTypeUri: utils.NewNstring(switchMapData["SwitchMapEntryTemplates"].([]interface{})[0].(map[string]interface{})["PermittedSwitchTypeUri"].(string)),
				LogicalLocation:        logicalLocation,
			}
			switchMapEntries := make([]ov.SwitchMapEntry, 1)
			switchMapEntries[0] = switchMapEntry

			switchMapTemplate := ov.SwitchMapTemplate{
				SwitchMapEntryTemplates: switchMapEntries,
			}
			//log.Warnf("%s", switchMapData["SwitchMapEntryTemplates"].([]interface{})[0].(map[string]interface{})["LogicalLocation"].(map[string]interface{})["LocationEntries"].([]interface{})[0].(map[string]interface{})["RelativeValue"])
			testLogicalSwitchGroup = ov.LogicalSwitchGroup{
				Name:              testName,
				Type:              d.Tc.GetTestData(d.Env, "Type").(string),
				Category:          d.Tc.GetTestData(d.Env, "Category").(string),
				SwitchMapTemplate: switchMapTemplate,
			}
			err := c.CreateLogicalSwitchGroup(testLogicalSwitchGroup)
			assert.NoError(t, err, "CreateLogicalSwitchGroup error -> %s", err)

			err = c.CreateLogicalSwitchGroup(testLogicalSwitchGroup)
			assert.Error(t, err, "CreateLogicalSwitchGroup should error because the LogicalSwitchGroup already exists, err-> %s", err)

		} else {
			log.Warnf("The logicalSwitchGroup already exists, so skipping CreateLogicalSwitchGroup test for %s", testName)
		}

		// reload the test profile that we just created
		testLogicalSwitchGroup, err = c.GetLogicalSwitchGroupByName(testName)
		assert.NoError(t, err, "GetLogicalSwitchGroupByName error -> %s", err)
	}

}