func TestDeleteOSBuildPlan(t *testing.T) {
	var (
		d               *I3STest
		c               *i3s.I3SClient
		testName        string
		testOSBuildPlan i3s.OSBuildPlan
	)
	if os.Getenv("I3S_TEST_ACCEPTANCE") == "true" {
		d, c = getTestDriverA("test_os_build_plan")
		if c == nil {
			t.Fatalf("Failed to execute getTestDriver() ")
		}
		testName = d.Tc.GetTestData(d.Env, "Name").(string)

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

		testOSBuildPlan, err = c.GetOSBuildPlanByName(testName)
		assert.NoError(t, err, "GetOSBuildPlanByName with deleted os build plan-> %+v", err)
		assert.Equal(t, "", testOSBuildPlan.Name, fmt.Sprintf("Problem getting os build plan name, %+v", testOSBuildPlan))
	} else {
		_, c = getTestDriverU("test_os_build_plan")
		err := c.DeleteOSBuildPlan("footest")
		assert.Error(t, err, fmt.Sprintf("ALL ok, no error, caught as expected: %s,%+v\n", err, testOSBuildPlan))
	}

}
func TestGetOSBuildPlanByName(t *testing.T) {
	var (
		d        *I3STest
		c        *i3s.I3SClient
		testName string
	)
	if os.Getenv("I3S_TEST_ACCEPTANCE") == "true" {
		d, c = getTestDriverA("test_os_build_plan")
		if c == nil {
			t.Fatalf("Failed to execute getTestDriver() ")
		}
		testName = d.Tc.GetTestData(d.Env, "Name").(string)

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

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

	} else {
		d, c = getTestDriverU("test_os_build_plan")
		testName = d.Tc.GetTestData(d.Env, "Name").(string)
		data, err := c.GetOSBuildPlanByName(testName)
		assert.Error(t, err, fmt.Sprintf("ALL ok, no error, caught as expected: %s,%+v\n", err, data))
	}
}
func TestCreateOSBuildPlan(t *testing.T) {
	var (
		d        *I3STest
		c        *i3s.I3SClient
		testName string
	)
	if os.Getenv("I3S_TEST_ACCEPTANCE") == "true" {
		d, c = getTestDriverA("test_os_build_plan")
		if c == nil {
			t.Fatalf("Failed to execute getTestDriver() ")
		}
		// find out if the test os build plan already exist
		testName = d.Tc.GetTestData(d.Env, "Name").(string)

		testOSBuildPlan, err := c.GetOSBuildPlanByName(testName)
		assert.NoError(t, err, "CreateOSBuildPlan get the OS BuildPlan error -> %s", err)

		if testOSBuildPlan.URI.IsNil() {
			testOSBuildPlan = i3s.OSBuildPlan{
				Name:            testName,
				Type:            d.Tc.GetTestData(d.Env, "Type").(string),
				OEBuildPlanType: d.Tc.GetTestData(d.Env, "OEBuildPlanType").(string),
			}
			err := c.CreateOSBuildPlan(testOSBuildPlan)
			assert.NoError(t, err, "CreateOSBuildPlan error -> %s", err)

			err = c.CreateOSBuildPlan(testOSBuildPlan)
			assert.Error(t, err, "CreateOSBuildPlan should error because the OSBuildPlan already exists, err-> %s", err)

		} else {
			log.Warnf("The osBuildPlan already exist, so skipping CreateOSBuildPlan test for %s", testName)
		}

		// reload the os build plan that we just created
		testOSBuildPlan, err = c.GetOSBuildPlanByName(testName)
		assert.NoError(t, err, "GetOSBuildPlan error -> %s", err)
	}
}