mirror of
https://github.com/redhat-developer/odo.git
synced 2025-10-19 03:06:19 +03:00
use more robust project.exists function (#1719)
* use more robust exists function * checked the error status returned by project * running only the two tests on travis * added more error check and made tests better * reversed the targetted run * removed the comment * added comment to GetProject
This commit is contained in:
committed by
OpenShift Merge Robot
parent
990928dee0
commit
0237ea2ab9
@@ -44,6 +44,7 @@ import (
|
|||||||
routev1 "github.com/openshift/api/route/v1"
|
routev1 "github.com/openshift/api/route/v1"
|
||||||
oauthv1client "github.com/openshift/client-go/oauth/clientset/versioned/typed/oauth/v1"
|
oauthv1client "github.com/openshift/client-go/oauth/clientset/versioned/typed/oauth/v1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
kerrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
// utilities
|
// utilities
|
||||||
@@ -470,6 +471,26 @@ func (c *Client) GetProjectNames() ([]string, error) {
|
|||||||
return projectNames, nil
|
return projectNames, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetProject returns project based on the name of the project.Errors related to
|
||||||
|
// project not being found or forbidden are translated to nil project for compatibility
|
||||||
|
func (c *Client) GetProject(projectName string) (*projectv1.Project, error) {
|
||||||
|
prj, err := c.projectClient.Projects().Get(projectName, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
istatus, ok := err.(kerrors.APIStatus)
|
||||||
|
if ok {
|
||||||
|
status := istatus.Status()
|
||||||
|
if status.Reason == metav1.StatusReasonNotFound || status.Reason == metav1.StatusReasonForbidden {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return prj, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// CreateNewProject creates project with given projectName
|
// CreateNewProject creates project with given projectName
|
||||||
func (c *Client) CreateNewProject(projectName string, wait bool) error {
|
func (c *Client) CreateNewProject(projectName string, wait bool) error {
|
||||||
projectRequest := &projectv1.ProjectRequest{
|
projectRequest := &projectv1.ProjectRequest{
|
||||||
|
|||||||
@@ -69,21 +69,17 @@ func DescribeProjects(client *occlient.Client) (ProjectList, error) {
|
|||||||
return getMachineReadableFormatForList(projects), nil
|
return getMachineReadableFormatForList(projects), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks whether a project with the given name exists or not
|
// Exists Checks whether a project with the given name exists or not
|
||||||
// projectName is the project name to perform check for
|
// projectName is the project name to perform check for
|
||||||
// The first returned parameter is a bool indicating if a project with the given name already exists or not
|
// The first returned parameter is a bool indicating if a project with the given name already exists or not
|
||||||
// The second returned parameter is the error that might occurs while execution
|
// The second returned parameter is the error that might occurs while execution
|
||||||
func Exists(client *occlient.Client, projectName string) (bool, error) {
|
func Exists(client *occlient.Client, projectName string) (bool, error) {
|
||||||
projects, err := client.GetProjectNames()
|
project, err := client.GetProject(projectName)
|
||||||
if err != nil {
|
if err != nil || project == nil {
|
||||||
return false, errors.Wrap(err, "unable to get the project list")
|
return false, err
|
||||||
}
|
}
|
||||||
for _, project := range projects {
|
|
||||||
if project == projectName {
|
return true, nil
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMachineReadableFormat(projectName string, isActive bool, apps []string) Project {
|
func GetMachineReadableFormat(projectName string, isActive bool, apps []string) Project {
|
||||||
|
|||||||
@@ -260,20 +260,22 @@ func componentTests(args ...string) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Context("Creating Component even in new project", func() {
|
Context("Creating Component even in new project", func() {
|
||||||
|
var project string
|
||||||
JustBeforeEach(func() {
|
JustBeforeEach(func() {
|
||||||
context = helper.CreateNewContext()
|
context = helper.CreateNewContext()
|
||||||
|
project = helper.RandString(10)
|
||||||
})
|
})
|
||||||
|
|
||||||
JustAfterEach(func() {
|
JustAfterEach(func() {
|
||||||
os.RemoveAll(context)
|
os.RemoveAll(context)
|
||||||
|
helper.DeleteProject(project)
|
||||||
})
|
})
|
||||||
It("should create component", func() {
|
It("should create component", func() {
|
||||||
helper.CmdShouldPass("odo", append(args, "create", "nodejs", "cmp-git", "--git", "https://github.com/openshift/nodejs-ex", "--project", "new-project", "--context", context, "--app", "testing")...)
|
helper.CmdShouldPass("odo", append(args, "create", "nodejs", "cmp-git", "--git", "https://github.com/openshift/nodejs-ex", "--project", project, "--context", context, "--app", "testing")...)
|
||||||
helper.CmdShouldPass("odo", "push", "--context", context, "-v4")
|
helper.CmdShouldPass("odo", "push", "--context", context, "-v4")
|
||||||
oc.SwitchProject("new-project")
|
oc.SwitchProject(project)
|
||||||
projectList := helper.CmdShouldPass("odo", "project", "list")
|
projectList := helper.CmdShouldPass("odo", "project", "list")
|
||||||
Expect(projectList).To(ContainSubstring("new-project"))
|
Expect(projectList).To(ContainSubstring(project))
|
||||||
helper.DeleteProject("new-project")
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user