Add get workspace API
This commit is contained in:
@@ -20,6 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/emicklei/go-restful"
|
"github.com/emicklei/go-restful"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
|
||||||
@@ -78,3 +79,18 @@ func (h *tenantHandler) ListWorkspaces(req *restful.Request, resp *restful.Respo
|
|||||||
|
|
||||||
resp.WriteEntity(result)
|
resp.WriteEntity(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *tenantHandler) GetWorkspace(request *restful.Request, response *restful.Response) {
|
||||||
|
workspace, err := h.tenant.GetWorkspace(request.PathParameter("workspace"))
|
||||||
|
if err != nil {
|
||||||
|
klog.Error(err)
|
||||||
|
if errors.IsNotFound(err) {
|
||||||
|
api.HandleNotFound(response, request, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
api.HandleInternalError(response, request, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.WriteEntity(workspace)
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import (
|
|||||||
restfulspec "github.com/emicklei/go-restful-openapi"
|
restfulspec "github.com/emicklei/go-restful-openapi"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
|
tenantv1alpha1 "kubesphere.io/api/tenant/v1alpha1"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/cache"
|
"sigs.k8s.io/controller-runtime/pkg/cache"
|
||||||
|
|
||||||
tenantv1alpha2 "kubesphere.io/api/tenant/v1alpha2"
|
tenantv1alpha2 "kubesphere.io/api/tenant/v1alpha2"
|
||||||
@@ -115,6 +116,13 @@ func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8s
|
|||||||
Doc("List all workspaces that belongs to the current user").
|
Doc("List all workspaces that belongs to the current user").
|
||||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||||
|
|
||||||
|
ws.Route(ws.GET("/workspaces/{workspace}").
|
||||||
|
To(handler.GetWorkspace).
|
||||||
|
Param(ws.PathParameter("workspace", "workspace name")).
|
||||||
|
Returns(http.StatusOK, api.StatusOK, tenantv1alpha1.Workspace{}).
|
||||||
|
Doc("Get workspace.").
|
||||||
|
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||||
|
|
||||||
c.Add(ws)
|
c.Add(ws)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ const orphanFinalizer = "orphan.finalizers.kubesphere.io"
|
|||||||
|
|
||||||
type Interface interface {
|
type Interface interface {
|
||||||
ListWorkspaces(user user.Info, queryParam *query.Query) (*api.ListResult, error)
|
ListWorkspaces(user user.Info, queryParam *query.Query) (*api.ListResult, error)
|
||||||
|
GetWorkspace(workspace string) (*tenantv1alpha1.Workspace, error)
|
||||||
ListWorkspaceTemplates(user user.Info, query *query.Query) (*api.ListResult, error)
|
ListWorkspaceTemplates(user user.Info, query *query.Query) (*api.ListResult, error)
|
||||||
CreateWorkspaceTemplate(workspace *tenantv1alpha2.WorkspaceTemplate) (*tenantv1alpha2.WorkspaceTemplate, error)
|
CreateWorkspaceTemplate(workspace *tenantv1alpha2.WorkspaceTemplate) (*tenantv1alpha2.WorkspaceTemplate, error)
|
||||||
DeleteWorkspaceTemplate(workspace string, opts metav1.DeleteOptions) error
|
DeleteWorkspaceTemplate(workspace string, opts metav1.DeleteOptions) error
|
||||||
@@ -196,6 +197,15 @@ func (t *tenantOperator) ListWorkspaces(user user.Info, queryParam *query.Query)
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *tenantOperator) GetWorkspace(workspace string) (*tenantv1alpha1.Workspace, error) {
|
||||||
|
obj, err := t.resourceGetter.Get(tenantv1alpha1.ResourcePluralWorkspace, "", workspace)
|
||||||
|
if err != nil {
|
||||||
|
klog.Error(err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*tenantv1alpha1.Workspace), nil
|
||||||
|
}
|
||||||
|
|
||||||
func (t *tenantOperator) ListWorkspaceTemplates(user user.Info, queryParam *query.Query) (*api.ListResult, error) {
|
func (t *tenantOperator) ListWorkspaceTemplates(user user.Info, queryParam *query.Query) (*api.ListResult, error) {
|
||||||
|
|
||||||
listWS := authorizer.AttributesRecord{
|
listWS := authorizer.AttributesRecord{
|
||||||
|
|||||||
Reference in New Issue
Block a user